El lenguaje del compilador sin acrónimo pronunciable, abreviado INTERCAL , es un lenguaje de programación muy exclusivo. Entre sus cualidades irreproducibles están sus operadores binarios.
Los dos operadores binarios de INTERCAL son intercalar (también conocido como mingle ) y select . Intercalar se representa con un cambio (¢), y seleccionar se representa con un sqiggle (~).
Interleave funciona tomando dos números en el rango 0-65535 y alternando sus bits. Por ejemplo:
234 ¢ 4321
234 = 0000011101010
4321 = 1000011100001
Result: 01000000001111110010001001
Output: 16841865
Select funciona tomando dos números en el rango 0-65535, tomando los bits en el primer operando que están en la misma posición que 1s en el segundo operando, y colocando esos bits a la derecha.
2345 ~ 7245
2345 = 0100100101001
7245 = 1110001001101
Taken : 010 0 10 1
Result: 0100101
Output: 37
En este desafío, se le dará una expresión binaria utilizando la operación intercalar o seleccionar. Debe calcular el resultado, utilizando la menor cantidad de bytes posible.
La expresión se dará como una cadena separada por espacios, que consta de un número entero en 0-65535, un espacio, uno ¢u ~otro, y un número entero en 0-65535.
La entrada y salida pueden realizarse a través de cualquier sistema estándar (STDIN, función, línea de comando, etc.). Lagunas estándar prohibidas.
Ejemplos:
5 ¢ 6
54
5 ~ 6
2
51234 ¢ 60003
4106492941
51234 ~ 60003
422
Este es el código de golf: menos bytes gana. Buena suerte.
EDITAR: Dado que algunos idiomas no admiten el símbolo de cambio (¢) de INTERCAL, puede utilizar el símbolo de dinero grande ($) en su lugar, con una penalización de 5 bytes.
$.
FIVE ONE TWO THREE FOUR? ¿Y no debería ser la salida en números romanos?