Inspiriert vom folgenden XKCD-Comic:
In Missy Elliots "Work It" lautet ein Teil des Chors wie folgt:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Vor diesem Hintergrund schlage ich die folgende Code-Golf-Herausforderung vor:
Erstellen Sie den folgenden Code:
- Nimmt 8-Bit-ASCII-Eingabe von STDIN; zB
n
(Hex 6E oder Bin 01101110) - Verschiebt die 8 Bits jedes Bytes um 1 Bit nach unten (ich glaube, es wird als bitweise Verschiebung nach unten bezeichnet), z. B.
01101110
wird00110111
("lege mein Ding ab"); - Invertiert die Bits jedes Bytes, z. B.
00110111
wird11001000
("flip it"); - Kehrt die Bits für jedes Byte um, z. B.
11001000
wird00010011
("umgekehrt"); - Wenn der Wert eines Bytes kleiner als 32 ist, führen Sie das Byte aus, dh mit
(95 + [byte value])
anderen Worten,(126-(31-[byte value]))
bevor Sie es wieder in ASCII konvertieren ... Wenn der Bytewert immer noch kleiner als 32 ist, wiederholen Sie Schritt 5 - Wenn der Wert eines Bytes größer als 126 ist, führen Sie das Byte aus, dh mit
([byte value] - 95)
anderen Worten,(32+([byte value]-127))
bevor Sie es wieder in ASCII konvertieren ... WENN der Wert immer noch größer als 126 ist, wiederholen Sie Schritt 6. - Zeigen Sie die neu konvertierte Zeichenfolge als ASCII an.
Ein Beispiel für diesen Code in Aktion:
(Die Eingabe, ist es das wert?)
workit missy
("missy" ist die Eingabe, "workit" ist die Funktion)
Jetzt hinter den Kulissen ...
(Lass es mich arbeiten ... In Binär)
01101101 01101001 01110011 01110011 01111001
(Leg mein Ding hin ... Bitweise)
00110110 00110100 00111001 00111001 00111100
(...Dreh es um...)
11001001 11001011 11000110 11000110 11000011
(... und umgekehrt!)
10010011 11010011 01100011 01100011 11000011
(Zurück in Dezimal konvertiert)
147 211 99 99 195
(Führen Sie die erforderlichen Berechnungen durch)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Zurück in ASCII konvertieren und die Ausgabe anzeigen)
4tccd
Regeln
- Der kürzeste Code gewinnt ... so einfach ist das ...
- Die Eingabe kann über eine Funktion, eine Eingabeaufforderung oder was auch immer für Sie funktioniert, erfolgen, solange Sie dafür sorgen können, dass Regel 1 für Sie "funktioniert" ...;)
- Ich bin nicht nach Reversibilität, solange Sie den Code dazu bringen können, das zu tun, worum ich ihn gebeten habe, werde ich glücklich sein ...
Viel Glück!
0 1 1 0 1 1 0 1
und 0 1 1 0 1 0 0 1
fürmi
P
wird zum Bytewert 235
und das Subtrahieren 95
lässt Sie mit 140
. Immer noch nicht druckbar. Oder verstehe ich falsch?