Le langage du compilateur sans acronyme prononçable, abrégé INTERCAL , est un langage de programmation très unique. Parmi ses qualités non reproductibles figurent ses opérateurs binaires.
Les deux opérateurs binaires d'INTERCAL sont entrelacés (également appelés mingle ) et select . Interleave est représenté par un changement (¢), et select est représenté par un carré (~).
Interleave fonctionne en prenant deux nombres dans la plage 0-65535 et en alternant leurs bits. Par exemple:
234 ¢ 4321
234 = 0000011101010
4321 = 1000011100001
Result: 01000000001111110010001001
Output: 16841865
Select fonctionne en prenant deux nombres dans la plage 0-65535, en prenant les bits du premier opérande qui sont dans la même position que 1s du deuxième opérande et en compressant à droite ces bits.
2345 ~ 7245
2345 = 0100100101001
7245 = 1110001001101
Taken : 010 0 10 1
Result: 0100101
Output: 37
Dans ce défi, vous recevrez une expression binaire à l'aide de l'opération d'entrelacement ou de sélection. Vous devez calculer le résultat en utilisant le moins d'octets possible.
L'expression sera donnée sous la forme d'une chaîne séparée par des espaces, composée d'un entier en 0-65535, d'un espace, soit ¢ou ~, soit d'un espace, et d'un entier en 0-65535.
L'entrée et la sortie peuvent se faire via n'importe quel système standard (STDIN, fonction, ligne de commande, etc.). Échappatoires standard interdites.
Exemples:
5 ¢ 6
54
5 ~ 6
2
51234 ¢ 60003
4106492941
51234 ~ 60003
422
C'est le golf de code - le moins d'octets gagne. Bonne chance.
EDIT: Étant donné que certaines langues ne prennent pas en charge le symbole de changement (¢) d'INTERCAL, vous pouvez utiliser le symbole de gros prix ($) à la place, avec une pénalité de 5 octets.
$.
FIVE ONE TWO THREE FOUR? Et la sortie ne devrait-elle pas être en chiffres romains?