1. Pi-ブレインファック方言
Brainfuckには、ほとんどすべての場面で多くの方言があり、Pi方言もその中にあります。 言語コマンドは、次のようにランダムな数字で誤った数字の形式で数字Piに書き込まれます。
コマンドごとに、書き込まれるビットが選択されます(ビットはソースコードのコマンドと同じ順序で並べられます)。 チームと番号の対応表が取得されます。
< > + — . , [ ]
0 1 2 3 4 5 6 7 8
そして、コマンドラインは、正しい数字Piで選択された位置にある数字の上のコマンドから始めて、1つ右にシフトされます。 たとえば、小数点の後の2番目の数字が選択された場合、その中の正しい数字は4で、対応表は次の形式を取ります。
< > + — . , [ ]
0 1 2 3 4 5 6 7 8
次に、目的のコマンドで、対応する番号を選択し、選択したカテゴリの正しい番号に置き換えます。 プログラム記録の結果は、Piに似た数字ですが、それとは異なる場所もあります。 だから、プログラム「Hello、World!」は、Brainfuckで次のように書かれています。
++++++[>++++++++++++<-]>.>++++++++++[>++++++++++<-]>+.+++++++..+++.>++++[>++++++
+++++<-]>.<+++[>----<-]>.<<<<<+++[>+++++<-]>.>>.+++.------.--------.>>+.
次のようにPiに書き込まれます。
3.141592653589793238462623382272502824197169299275107820904924592337816406386238
99262833482534311206728234808621328230264709314460935058223872535941812844111745
00841022019385311055296426229289549302819244388109726652334471204756422337867231
65221231909345628566933460342610454226248213391607264249148273720587036656315582
17288153092396282225439171532436789559536003133023024882044652108412695192151163
94330573703656595909530921261173839326137921051125420742623799227495273538857227
24892227938133011749109833675362442656243086321294946795024737130702479860343702
77453921711629317375838467480846766440513202056822724526351082178577132275778260
91736271767204684409312229532301462492853110307922896892089235450199501120290219
65862034218129813624774731309964518707241349993993372978039951049734732816036348
59504445345544690330263252250825304468003522193158817101
2. 別のPi言語
難解な言語であっても、この言語は理論的な記述という形でしか存在しません。 言語の考え方は、Piの中で正しいエンコードを選択すると情報を見つけることができるというよく知られた理論に基づいています。 この場合、piはバイナリ表現で記述されます
11.
00100100 00111111 01101010 10001000 10000101 10100011 00001000 11010011
00010011 00011001 10001010 00101110 00000011 01110000 01110011 01000100
10100100 00001001 00111000 00100010 00101001 10011111 00110001 11010000
00001000 00101110 11111010 10011000 11101100 01001110 01101100 10001001
別のPi言語のプログラムのソースコードは、数値のペアです。読み取りを開始するビットのインデックスと、読み取るバイト数です。 読み取りバイトは、対応するASCIIコードを使用して文字に変換され、結果のテキストは他の言語のソースコードとして解釈されます(言語は数字のペアと共に指定する必要があります)。
理論的には、Piの中には、任意の長さのビットのシーケンス、つまり任意の複雑なプログラムのコードを見つけることができます。 この言語はチューリング完全になります(他の言語で実行できるタスクはすべてこの言語で完了できるため)。 別のことは、そのプログラミングの複雑さにより、彼はMalbolgeと議論できることです。 ただし、Malbolgeとは異なり、「Hello、World!」という別のPi言語の記述は簡単でエレガントです。
3 1 HQ9+
このコードを「解釈」するには:
- レコードの3番目のビットから1バイトを読み取ります。 最初の単位はゼロバイトと見なされるため、小数点以下2番目のゼロから開始します:01001000;
- 10進数(72)およびそのようなASCIIコード(H)の文字に変換します。
- 受信した文字をHQ9 +プログラムコードとして解釈します。この素晴らしい言語の場合、これは「Hello、World!」を出力するコマンドです。 いいですね
長さの異なるいくつかの例:
- 標準的な例「99本のビール」
113 1 HQ9+ (9)
- 文字を読んで印刷する
102168614(+-1) 2 Brainfuck (,.)
- 無限ループ
3234901746(+-1) 3 Boolfuck (*[])
(最後の2つの例は、 Search Piサービスを使用して検出されました)
3. Piパターン言語
開発ツールと新しいプログラミング言語を作成するという哲学の間の何か。 これは、言語自体によるプログラミング言語のセマンティクスと構文の拡張性のアイデアに基づいています。
4.ボーナス:-)
Pi Dayへのささやかな贈り物: Pi Day Challenge 2011は、Piの数に関連する毎年更新される一連のパズルです。