Il tuo compito è prendere una stringa crittografata come input e produrre la stringa decrittografata per rivelare il suo messaggio nascosto.
Le stringhe, sia di input che di output, conterranno caratteri da questo elenco di 64 caratteri ASCII (notare lo spazio iniziale):
!"#$%&'()*+,-./0123456789:;=?@[\]^_abcdefghijklmnopqrstuvwxyz|~
A questi caratteri sono assegnati numeri, nell'ordine in cui sono elencati sopra:
! " # $ % & ...
0 1 2 3 4 5 6 ...
Quindi, lo spazio è il numero 0, !è il numero 1 ed ~è il numero 63. Questi numeri possono essere rappresentati in codice binario a 6 bit:
: 0: 000000
!: 1: 000001
": 2: 000010
#: 3: 000011
.. ... ......
z: 61: 111101
|: 62: 111110
~: 63: 111111
La crittografia è molto semplice:
Userò eCper i caratteri crittografati e Cper i caratteri della stringa originale. C(n)è l'ennesimo carattere della stringa originale, mentre eC(n)è l'ennesimo carattere della stringa crittografata.
Utilizzerai la rappresentazione binaria a 6 bit dei caratteri. Il primo personaggio sarà eC(0) = not(C(0)). Da lì, tutti i personaggi saranno eC(n) = xor(C(n),C(n-1)).
Esempio:
Supponiamo che la stringa di input sia code.
cè il 38 ° carattere (zero indicizzato) o100110in binario. La versione crittografata ha tutti i bit invertiti, quindi011001 -> 25 -> '9'(di nuovo, zero indicizzato).oè il 50 ° carattere, o110010in binario.xor(100110, 110010) = 010100 = 20 = '4'.dè il 39 ° carattere, o100111in binario.xor(100111, 110010) = 010101 = 21 = '5'.eè il 40 ° carattere, o101000in binario.xor(101000, 100111) = 001111 = 15 = '/'.
Quindi, se la stringa originale è code, la stringa crittografata diventerà 945/.
Casi test:
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|~
