Inspirado nos seguintes quadrinhos do XKCD:
No "Work It" de Missy Elliot, parte do refrão é a seguinte:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Tendo isso em mente, proponho o seguinte desafio de código de golfe:
Crie um código que faça, em ordem:
- Recebe entrada ASCII de 8 bits do STDIN; por exemplo
n
(Hex 6E ou Bin 01101110) - Turnos de 8 bits de cada byte baixo nível de 1 bit (creio que é chamado da tecla shift bit a bit), por exemplo,
01101110
torna-se00110111
( "colocar a minha coisa para baixo"); - Inverte os bits de cada byte, por exemplo,
00110111
torna-se11001000
("flip it"); - Inverte os bits para cada byte, por exemplo,
11001000
torna-se00010011
("inverta"); - Se o valor de um byte for menor que 32, execute
(95 + [byte value])
ou, em outras palavras,(126-(31-[byte value]))
o byte antes de converter novamente em ASCII ... Se o valor do byte ainda for menor que 32, repita a etapa 5 - Se o valor de um byte for maior que 126, execute
([byte value] - 95)
ou, em outras palavras,(32+([byte value]-127))
o byte antes de converter novamente para ASCII ... SE o valor ainda for maior que 126, repita a etapa 6. - Exiba a sequência recém-convertida como ASCII.
Um exemplo deste código em ação:
(A entrada, vale a pena?)
workit missy
("missy" é a entrada, "workit" é a função)
Agora nos bastidores ...
(deixe-me trabalhar ... em binário)
01101101 01101001 01110011 01110011 01111001
(Largue as coisas ... Bitwise)
00110110 00110100 00111001 00111001 00111100
(... Virá-lo ...)
11001001 11001011 11000110 11000110 11000011
(... E inverta isso!)
10010011 11010011 01100011 01100011 11000011
(Convertido de volta para decimal)
147 211 99 99 195
(Faça a matemática necessária)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Converta de volta para ASCII e exiba a saída)
4tccd
Regras
- O código mais curto ganha ... simples assim ...
- A entrada pode ser via função, por prompt ou o que funcionar para você, desde que você possa fazer com que a Regra 1 "funcione" para você ...;)
- Não estou atrás da reversibilidade, desde que você possa fazer o código fazer o que eu pedi, ficarei feliz ...
Boa sorte!
0 1 1 0 1 1 0 1
e 0 1 1 0 1 0 0 1
parami
P
transforma no valor de byte 235
e a subtração 95
deixa você com 140
. Ainda não imprimível. Ou entendo mal?