皆さん、今日の目標はチューリング マシン シミュレータを構築することです。それが何かわからない人は、ウィキペディアの記事を参照してください。現在使用している状態テーブルは、そのページの一部である Formal Definitionの最後にあります。
このコードは、一連の「0」と「1」の文字列文字、マシンが開始する文字を表す整数、およびプログラムの状態を表す整数 (順不同) を受け取り、次の最終結果を出力します。文字列の操作と最終的な位置。例:
例 1:
1010 state A(0)
^ (3)
1011 state B(1)
^ (2)
1011 state B(1)
^ (1)
1111 state A(0)
^ (2)
1111 state C(0)
^ (3)
1111 HALT
^ (2)
例 2:
110100 state B(1)
^ (3)
110100 state B(1)
^ (2)
111100 state A(0)
^ (3)
111100 state C(2)
^ (4)
111110 state B(1)
^ (5)
1111110 state A(0)
^ (6, tape has been extended to right)
1111111 state B(1)
^ (5)
1111111 state B(1)
^ (4)
1111111 state B(1)
^ (3)
1111111 state B(1)
^ (2)
1111111 state B(1)
^ (1)
1111111 state B(1)
^ (0)
01111111 state B(1)
^ (0, tape has been extended to left)
11111111 state A(0)
^ (1)
11111111 state C(2)
^ (2)
11111111 HALT
^ (1)
その他:
- コードは、必要に応じて文字列を拡張して、テープの「空白」への書き込みを適切に処理する必要があります。
- 指定されたステート マシンは、いかなる種類の「ブランク テープ」アクションも指定しないため、すべてのブランク値を 0 として扱います。
- 初期状態の文字列の評価を処理するメソッドのみをカウントする必要があり、そのデータをどのように出力するかはあなた次第です。
- テープ上で右に移動すると上に増加し (文字列位置 0 は一番左)、状態 0 は A、状態 1 は B、状態 2 は C です。
(できれば)最終編集: この質問で混乱とトラブルを引き起こしたことについて、心からお詫び申し上げます。リストした提供された状態テーブルを読み違えて、逆に取得しました。時間を無駄にしてしまったことをお許しください。それは完全に意図的ではありませんでした!