Su tarea es tomar una cadena encriptada como entrada, y sacar la cadena desencriptada, para revelar su mensaje oculto.
Las cadenas, tanto de entrada como de salida, contendrán caracteres de esta lista de 64 caracteres ASCII (tenga en cuenta el espacio inicial):
!"#$%&'()*+,-./0123456789:;=?@[\]^_abcdefghijklmnopqrstuvwxyz|~
Estos caracteres son números asignados, en el orden en que se enumeran arriba:
! " # $ % & ...
0 1 2 3 4 5 6 ...
Entonces, el espacio es el número 0, !es el número 1 y ~es el número 63. Estos números se pueden representar en código binario de 6 bits:
: 0: 000000
!: 1: 000001
": 2: 000010
#: 3: 000011
.. ... ......
z: 61: 111101
|: 62: 111110
~: 63: 111111
El cifrado es muy simple:
Lo usaré eCpara los caracteres encriptados y Cpara los caracteres de la cadena original. C(n)es el enésimo carácter de la cadena original, mientras que eC(n)es el enésimo carácter de la cadena encriptada.
Usarás la representación binaria de 6 bits de los personajes. El primer personaje será eC(0) = not(C(0)). A partir de ahí, todos los personajes serán eC(n) = xor(C(n),C(n-1)).
Ejemplo:
Supongamos que la cadena de entrada es code.
ces el 38º carácter (indexado a cero), o100110en binario. La versión encriptada tiene todos los bits invertidos, entonces011001 -> 25 -> '9'(nuevamente, indexado a cero).oes el personaje número 50, o110010en binario.xor(100110, 110010) = 010100 = 20 = '4'.des el 39º caracter, o100111en binario.xor(100111, 110010) = 010101 = 21 = '5'.ees el personaje número 40, o101000en binario.xor(101000, 100111) = 001111 = 15 = '/'.
Entonces, si la cadena original es code, la cadena cifrada se convertirá 945/.
Casos de prueba:
945/
code
,&'8[14 =?;gp+% 2'@s&&c45/eg8?&
programming puzzles & code golf
;a$5$%0r?2@12dw6# lb-eg&519nt%ot=9$@es@96+?;ga" 4*)&ta56dp[?o#t%oh/"(&?#ee![,+,/+fe4"
a $150 reward will be given to those sending account and pin# to hackers@steal_id.com
~!#!'!#!/!#!'!#![!#!'!#!/!#!'!#!~!#!'!#!/!#!'!#![!#!'!#!/!#!'!#!
!"#$%&'()*+,-./0123456789:;=?@[\]^_abcdefghijklmnopqrstuvwxyz|~
