新年おめでとうございます!

今日は2011年11月11日です。 DD.MM.YY形式では、非常に美しいバイナリレコードが取得されます(後者は、ちなみに、今後88年間-2100年1月1日まで)。 これは、このオタク新年を発表する絶好の機会です。





停止しますが、このような平文の日のお祝いはナンセンスです。 プログラマーの日( 2010、2011 )に異常なお祝いについてすでに書いていますが、ここでは特別なものが必要です...個人的に、私のオタクという用語は何かバイナリに関連付けられています。 0と1に基づく挨拶はどうですか?



スプーン



古典から始めましょう。 Brainfuck-すべての機会のための言語。 また、彼はバイナリの方言も持っています。 Spoonでは、BFコマンドは、プレフィックスなしのコードを構成するゼロと1つのシーケンスに置き換えられるため、スペースで区切る必要さえありません。 「Happy Nerd New Year!」と表示される次のBFコード



  ++++++++++ [> +> ++> +++> ++++> +++++> ++++++> +++++++> +++ +++++> +++++++++> +++++++++++> +++++++++++> ++++++++++++
 +> +++++++++++++ <<<<<<<<<<<<<<-] >>>>>>>>>> --------。>>- -。>> -------- ..> ---------。<<<<<<<<<< --------。>>>> ++
 ++++。>>> ---------。> ++。<-。<<<<<<<。>>>>。>>> +。> +++++。 <<<<<<<<。>>>>>-。>>。<。>> -----。<<<<<<<<<。 




スプーンコードに相当



  11111111110010001010101101011101011110100101111101011111101011111110101111111101011111111101011111111111111
 01011111111111010111111111111010111111111111111011011011011011011011011011011011011110110110110110110110010000011010010010
 0100100100100100000000000000000000000000010100100100000000000010100100100000000000000000000000000000000010
 10001010010000000000000000000000000000000000000000101001101101101101101101101101101100000000000000000000000000101
 00100100100101111110010100100100100000000000000000000000000000000000000001010010110010100110000010100110110110
 1101101101100101001001001001000101001001001010010100101111100101001101101101101101101101100100101001001
 00100100100000010100100100010100110010100100100000000000000000010100110110110110110110110111001010 




しかし、ご存知のとおり、後者ははるかにバイナリに見えます。







この言語の作者はそれを「めまい」と説明しますが、私はこの特徴に同意せざるを得ません。 この言語のプログラムは厳密にバイナリですが、Spoonとは異なり、コマンド自体はゼロと1でエンコードされておらず、それらを切り替えるシステムです。 Whirlには24のチームがあり、2つのリングに配置されています-数学と運用。 ゼロと1は、リングの回転を制御し(つまり、リング上の現在のコマンドを変更し)、リングを切り替えて、現在のコマンドの実行をアクティブにします。 インタープリターの機械的な実装は次のようになります。







これはすべて混乱を招きます(たとえば、ゼロは現在のリングを切り替えるか、前の文字に応じて回転方向を変更します)が、奇妙なことに、この言語は比較的人気があり、作成者だけでなく開発されています。 そのため、特定のAviad Ben DovがWhirlコードジェネレーターを作成しました。これを使用して、「おめでとう」と表示するプログラムを作成しました。



  0011111100110011110011111001111000001110011111000111001111000110011100111111000111110001111000111110
 01111000001110011111000111001111000110011100010011111001100000000000000000000000000000000000111110001001
 1111001100011111000110011111001111001100111100111110011110000011100111110001110011110001100111000100
 1111100110001111100000010001111100011000001111001100111100111110011110000011100111110001110011110001
 1001110001001111100110000000000000000000000000000000111110000000101001111100011000111110000000000000000
 0000000000000000011110011111001111000010001111100111001110001100011100011000111000110001110011111100
 0111110001111000111110011110000011000111000001110001110011111000000000000000000000000000001111100011
 1100011111000111100000100010011001111001111111111111000111100011111001111000001110011111000111001111
 0001100111000100111110011000000011111000001111100010001001100111100111111001111100011110001111100111
 1000001110011111000111001111000110011100010011111001100011111000001111100010001001100111100111111001
 1111000111100011111001111000001110011111000111001111000110011100010011111001100000000000000011111000
 1111000111110001111000001000100110011110011111100111110001111000111110011110000011100111110001110011
 1100011001110001001111100110000000000000000000111110000011111000100010011001111001111110011111000111
 1000111110011110000011100111110001110011110001100111000100111110011000000000000000000000000000000000000
 0000001111100011110001111100011110000010001001100111100111111001111100011110001111100111100000111001
 1111000111001111000110011100010011111001100000000000000000000000000000000011111000001111100010001001100111
 1001111110011111000111100011111001111000001110011111000111001111000110011100010011111001100000000000000
 0000000000001111100000111110001000100 




01_



この言語は完全にバイナリではありません。他の文字を使用する必要がありますが、ゼロと1は依然として主要なセマンティックロードを担っており、テキストメッセージを表示するのに十分な数があります。



  h = 01001000011000010111000001110000011110010010000001001110011001010111001001100100001000000100111001
 1001010111011100100000010110010110010101100000010111001000001010。 




確かに、この言語のテキストメッセージのデコードは非常に簡単です。等号の後のシーケンス0と1は、メッセージシンボルのバイナリコードであり、メッセージと同じ順序で行に書き込まれます:01001000-'H'、01100001-'a'およびなど ビット反転も、逆の文字順序もありません-退屈でも、コレクション用にしましょう。



このリストには、David Morgan-Marの別の傑作であるBITを含めることができます。 この言語は、プログラムのバイナリ記録にも基づいていますが、0と1の代わりに、より読みやすいZEROとONEが使用されます。 書き込みと読み取りも別々のビットで動作するため、テキストメッセージを表示するプログラムは、フォームの多数の行のシーケンスのように見えます。



  LINE NUMBER ONE ONE CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ZERO 




各行には、その番号(LINE NUMBER ...)、実行中のコマンド(PRINT ...)、および別の行への無条件ジャンプ(GOTO ...)が含まれています。 しかし、そのようなプログラムは、1)面白くなく、2)著者の通訳がいないために検証が困難です。 ですから、読者の豊かな想像力に翻弄されます。



All Articles