Inspirado en el siguiente cómic de XKCD:
En "Work It" de Missy Elliot, parte del coro dice lo siguiente:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Teniendo esto en cuenta, propongo el siguiente código de desafío de golf:
Crea un código que lo haga, en orden:
- Toma la entrada ASCII de 8 bits de STDIN; por ejemplo
n
(Hex 6E o Bin 01101110) - Cambia los 8 bits de cada byte a nivel de 1 bit (creo que se llama un desplazamiento a nivel de bits), por ejemplo, se
01101110
convierte en00110111
("baja mi cosa"); - Invierte los bits de cada byte, por ejemplo, se
00110111
convierte en11001000
("voltearlo"); - Invierte los bits para cada byte, por ejemplo, se
11001000
convierte00010011
("revertirlo"); - Si el valor de un byte es menor que 32, realice
(95 + [byte value])
, o en otras palabras,(126-(31-[byte value]))
en el byte antes de volver a convertirlo a ASCII ... Si el valor del byte aún es menor que 32, repita el paso 5 - Si el valor de un byte es mayor que 126, realice
([byte value] - 95)
, o en otras palabras,(32+([byte value]-127))
en el byte antes de volver a convertirlo a ASCII ... SI el valor sigue siendo mayor que 126, repita el paso 6. - Mostrar la cadena recién convertida como ASCII.
Un ejemplo de este código en acción:
(La entrada, ¿vale la pena?)
workit missy
("missy" es la entrada, "workit" es la función)
Ahora detrás de escena ...
(déjame trabajarlo ... en binario)
01101101 01101001 01110011 01110011 01111001
(Deja mi cosa ... Bitwise)
00110110 00110100 00111001 00111001 00111100
(...Voltearlo...)
11001001 11001011 11000110 11000110 11000011
(... ¡Y revertirlo!)
10010011 11010011 01100011 01100011 11000011
(Convertido de nuevo a decimal)
147 211 99 99 195
(Realice las matemáticas necesarias)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Convertir de nuevo a ASCII y mostrar, la salida)
4tccd
Reglas
- El código más corto gana ... así de simple ...
- La entrada puede ser a través de la función, por solicitud o lo que sea que funcione para usted, siempre que pueda hacer que la Regla 1 "funcione" para usted ...;)
- No busco la reversibilidad, siempre que pueda hacer que el código haga lo que le he pedido, estaré feliz ...
¡La mejor de las suertes!
0 1 1 0 1 1 0 1
y 0 1 1 0 1 0 0 1
parami
P
convierte en el valor de byte 235
y restando 95
te deja con 140
. Aún no imprimible. ¿O lo entiendo mal?