さらに別のBrainfuck解析問題ですが、今回は...異なります。
あなたはさまざまな興味深い問題を解決するためにBrainfuckプログラムを作っているInfinite Monkeys Incorporatedで働いています(偶然にも、結局のところ、会社はランダムなプログラムを作っています)。ただし、Brainfuckのみを実行する高速チューリングマシンには、構文エラーに関する小さくて高価な問題があるようです。1つを作成すると、コンピューターが爆発します。それはおそらく設計上の欠陥かもしれませんが、それがなぜ起こるのかわからない人はいませんでした。
チューリングマシン(特に高速なマシン)は高価なので(結局、無限のRAMが必要です)、コードを実行する前にプログラムに構文エラーがないことを確認した方が良いでしょう。会社は大量のコードを実行するため、手動検証は機能しません。BrainfuckコードのSTDINを読み取るプログラムを作成し、プログラムに構文エラーがある場合(たとえば、
]
一致しないため構文エラーである場合)、終了ステータスを0(エラー)以外に設定して終了します[
。プログラムが完全に正常であれば、終了ステータスを0に設定して終了します。プログラムがを含む間違いを正しく認識していることを確認してください
[]
。別のコンピューターを爆発させたくないでしょうか?ああ、それができる限り短いことを確認してください-あなたのボスは短いプログラムの代金を払っています(彼は彼らが速いか何かを考えているからです)。ああ、Brainfuckでコーディングする必要はありません(実際、Brainfuckは終了コードをサポートしていないため、できません)-コードは通常のコンピューターで実行されます。
したがって、ご覧のとおり、あなたの仕事はBrainfuckプログラムが「有効」である(ペアの[]
シンボルがある)かどうかを確認することです。Brainfuckプログラムには以外の文字を使用できる[]
ため、他のコマンドがあるという理由だけでプログラムを拒否しないでください。最小のコードが勝ちますが、おそらくあなたはとにかくupvotesにもっと関心があるでしょう。
GCD(a,b)
代わりに使用できます0 != a || b
。