0

私はブレインファックの学習を始めたばかりで、ハローワールドの例しかありません。角かっこが何に使用されるかについて質問があります。

例:

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

これが「ハローワールド」というプログラムです。[ ] がある理由がわかりませんが-+中かっこが次のように書かれていることをどこかで読みました。

[ (opening square bracket)
while(mem[ptr]) {
] (closing square bracket)
}

しかし、この情報を持っていても、なぜここにあるのかわかりません。

私はphp/C/POSIX/Javaに堪能ですが、ここではこれを理解していません。

4

1 に答える 1

1

すべて[が別のものと一致する必要があります]

そのため、常にペアで考えてください。これがあなたがそれらを推論する方法です。プログラムが a に遭遇する]と、現在のセルをチェックします。セルに 0 より大きい数値が含まれている場合、プログラムはマッチングに戻り[ます。現在のセルに 0 が含まれている場合、プログラムは続行されます。

[ と ] はループを作る方法です。

簡単な例を次に示します。+++[-]このプログラムは、最初に現在のセルを 3 に設定し、次にそれをクリアします ([-]非常に頻繁にこの部分に遭遇します。これは、元の値が何であれ、セルを 0 に設定するために使用される部分です)。次に、最初のものに遭遇し、それ[を無視します (これは単なるマーカーと考えることができます)。次に実行-され、最初のセルが 2 になります。その後、]. 現在のセルには 2 が含まれているため、2 は 0 より大きいため、プログラムは に戻り[ます。セルの値が 0 になるまでこれをさらに 2 回繰り返します][これにより、プログラムは右に進みます (このプログラムには の後に命令がないため]、この小さなプログラムは終了します)。

于 2014-10-17T06:10:19.087 に答える