Ispirato al seguente fumetto XKCD:
In "Work It" di Missy Elliot, parte del coro è la seguente:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Tenendo conto di ciò, propongo la seguente sfida del codice golf:
Crea codice che lo fa, in ordine:
- Accetta l'ingresso ASCII a 8 bit da STDIN; ad es.
n
(Hex 6E o Bin 01101110) - Sposta gli 8 bit di ciascun byte al di sotto del livello di 1 bit (credo che sia chiamato spostamento bit per bit in basso), ad esempio
01101110
diventa00110111
("metti giù la mia cosa"); - Inverte i bit di ogni byte, ad esempio
00110111
diventa11001000
("capovolgilo"); - Inverte i bit per ogni byte, ad esempio
11001000
diventa00010011
("inverti"); - Se il valore di un byte è inferiore a 32, quindi eseguire
(95 + [byte value])
, o in altre parole,(126-(31-[byte value]))
sul byte prima di riconvertirlo in ASCII ... Se il valore del byte è ancora inferiore a 32, ripetere il passaggio 5 - Se il valore di un byte è maggiore di 126, quindi eseguire
([byte value] - 95)
, o in altre parole,(32+([byte value]-127))
sul byte prima di riconvertirlo in ASCII ... SE il valore è ancora maggiore di 126, ripetere il passaggio 6. - Visualizza la stringa appena convertita come ASCII.
Un esempio di questo codice in azione:
(L'input, ne vale la pena?)
workit missy
("missy" è l'input, "workit" è la funzione)
Ora dietro le quinte ...
(fammi lavorare ... in binario)
01101101 01101001 01110011 01110011 01111001
(Metti giù la mia cosa ... Bitwise)
00110110 00110100 00111001 00111001 00111100
(... Capovolgilo ...)
11001001 11001011 11000110 11000110 11000011
(... E invertilo!)
10010011 11010011 01100011 01100011 11000011
(Convertito nuovamente in decimale)
147 211 99 99 195
(Esegui la matematica necessaria)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Converti nuovamente in ASCII e visualizza l'output)
4tccd
Regole
- Il codice più corto vince ... così semplice ...
- L'input può essere tramite funzione, su richiesta o qualunque cosa funzioni per te, purché tu possa far sì che la Regola 1 "funzioni" per te ...;)
- Non sto cercando la reversibilità, finché puoi far fare al codice ciò che ti ho chiesto di fare, sarò felice ...
Buona fortuna!
0 1 1 0 1 1 0 1
e 0 1 1 0 1 0 0 1
permi
P
si trasforma in valore byte 235
e la sottrazione 95
ti lascia con 140
. Ancora non stampabile. O fraintendere?