次のXKCDコミックに触発されました。
Missy Elliotの「Work It」では、コーラスの一部は次のようになっています。
Is it worth it, let me work it
I put my thing down, flip it and reverse it
それを念頭に置いて、私は次のコードゴルフチャレンジを提案します。
次の順序で実行するコードを作成します。
- STDINから8ビットASCII入力を受け取ります。例
n
(Hex 6E、またはBin 01101110) - 1ビットレベル(私はそれはビット単位のシフトダウンと呼ばれると信じて)、例えばダウンシフトの各バイトの8ビットが
01101110
なり00110111
(「私の事を下に置きます」); - 例えば、各バイトのビットを反転させ
00110111
となり11001000
(「それを反転」); - 各バイトのビットを反転します。たとえば、次のように
11001000
なります00010011
(「反転」)。 - バイトの値が32未満の場合、ASCIIに変換する前に、バイトに対してを実行します
(95 + [byte value])
。つまり、(126-(31-[byte value]))
バイトの値が32未満の場合は、手順5を繰り返します。 - バイトの値が126より大きい場合は、ASCIIに変換する前にバイトに対してを実行します
([byte value] - 95)
。つまり、(32+([byte value]-127))
値が126より大きい場合は、手順6を繰り返します。 - 新しく変換された文字列をASCIIとして表示します。
実際のこのコードの例:
(入力、それは価値がありますか?)
workit missy
(「missy」が入力、「workit」が関数です)
舞台裏...
(私にそれを働かせてください...バイナリに)
01101101 01101001 01110011 01110011 01111001
(私の事を下に置いてください...ビットごと)
00110110 00110100 00111001 00111001 00111100
(...それを裏返して...)
11001001 11001011 11000110 11000110 11000011
(...そして逆に!)
10010011 11010011 01100011 01100011 11000011
(10進数に変換)
147 211 99 99 195
(必要な計算を実行してください)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(ASCIIに変換して表示、出力)
4tccd
ルール
- 最短のコードが勝つ...そのように単純...
- ルール1を「機能させる」ことができる限り、関数、プロンプト、または機能するものを介して入力を行うことができます...;)
- 私は可逆性を求めているわけではありません。私が要求したことをコードに実行させることができれば、私は幸せになります...
がんばって!
0 1 1 0 1 1 0 1
し、0 1 1 0 1 0 0 1
ためにmi
P
バイト値に235
なり、減算95
するとになり140
ます。まだ印刷できません。それとも誤解していますか?