最終更新日 2007年4月21日
TURING.EXE でプログラミングしてみましょう。
TURING.EXE を立ち上げます。



チューリング・マシンのプログラムは、小さな子供の遊んでいる様子をイメージすればいいです。
上図のような初期データが与えられたとき 0 をすべて 1 に変えるプログラムを考えて見ます。
先頭から右に一つずつ調べて、0 があれば 1 に変え、1 であればそのままにします。 一つ処理した後も同じことをすればいいので、状態を変える必要はありません。 従って、
| 0 | 0 | 1 | 0 | R |
| 0 | 1 | 1 | 0 | R |


| 0 | 0 | 1 | 0 | R |
| 0 | 1 | 0 | 0 | R |




| 0 | B | B | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | 0 | B | 2 | R |
| 2 | 0 | 0 | 2 | R |
| 2 | 1 | 1 | 2 | R |
| 2 | B | B | 3 | R |
| 3 | B | 0 | 4 | R |
| 0 | B | B | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | 0 | B | 2 | R |
| 2 | 0 | 0 | 2 | R |
| 2 | 1 | 1 | 2 | R |
| 2 | B | B | 3 | R |
| 3 | B | 0 | 4 | R |


| 3 | B | 0 | 4 | L |
| 4 | 0 | 0 | 4 | L |
| 4 | B | B | 5 | L |
| 5 | 0 | 0 | 5 | L |
| 5 | 1 | 1 | 5 | L |
| 5 | B | B | 1 | R |
| 3 | 0 | 0 | 3 | R |
| 0 | B | B | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | 0 | B | 2 | R |
| 2 | 0 | 0 | 2 | R |
| 2 | 1 | 1 | 2 | R |
| 2 | B | B | 3 | R |
| 3 | B | 0 | 4 | L |
| 4 | 0 | 0 | 4 | L |
| 4 | B | B | 5 | L |
| 5 | 0 | 0 | 5 | L |
| 5 | 1 | 1 | 5 | L |
| 5 | B | B | 1 | R |
| 3 | 0 | 0 | 3 | R |


| 1 | B | B | 6 | L |
| 6 | B | B | 6 | L |
| 6 | 1 | B | 7 | R |
| 7 | B | B | 7 | R |
| 7 | 0 | 0 | 8 | R |
| 7 | 1 | 1 | 8 | R |
| 8 | 0 | 0 | 8 | R |
| 8 | 1 | 1 | 8 | R |
| 8 | B | 1 | 9 | L |
| 9 | 0 | 0 | 9 | R |
| 9 | 1 | 1 | 9 | R |
| 9 | B | B | 6 | L |
| 0 | B | X | 1 | R |
| 6 | X | B | 10 | L |
| 0 | B | X | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | 0 | B | 2 | R |
| 2 | 0 | 0 | 2 | R |
| 2 | 1 | 1 | 2 | R |
| 2 | B | B | 3 | R |
| 3 | B | 0 | 4 | L |
| 4 | 0 | 0 | 4 | L |
| 4 | B | B | 5 | L |
| 5 | 0 | 0 | 5 | L |
| 5 | 1 | 1 | 5 | L |
| 5 | B | B | 1 | R |
| 3 | 0 | 0 | 3 | R |
| 1 | B | B | 6 | L |
| 6 | B | B | 6 | L |
| 6 | 1 | B | 7 | R |
| 7 | B | B | 7 | R |
| 7 | 0 | 0 | 8 | R |
| 7 | 1 | 1 | 8 | R |
| 8 | 0 | 0 | 8 | R |
| 8 | 1 | 1 | 8 | R |
| 8 | B | 1 | 9 | L |
| 9 | 0 | 0 | 9 | L |
| 9 | 1 | 1 | 9 | L |
| 9 | B | B | 6 | L |
| 6 | X | B | 10 | R |


諦めて、プログラムをチェックしてみます。問題は
0 が1つも無かった場合と 0 を処理し終えた場合を区別していなかった
ことにあります。
空白(B で表現する)に出会うまで引っ返すという状態(5)で
空白(B で表現する)に出会うと、空白(B で表現する)を書き込み、
最初にやったことと同じことをすればいいから、
これから 0 を見付けなければいけないという状態(1)に変わります。
| 5 | B | B | 1 | R |
0 が見つかった場合の処理をします。 空白(B で表現する)に出会うまで引っ返すという状態(5)で 空白(B で表現する)に出会うと、空白(B で表現する)を書き込み、 再度 0 を見付けなければいけないという状態(11)に変わります。
| 5 | B | B | 11 | R |
| 11 | 1 | 1 | 11 | R |
| 11 | 0 | B | 2 | R |
| 11 | B | B | 6 | L |
そこで、0 が1つも無かった場合の処理を考えます。 これから 0 を見付けなければいけないという状態(1) で、初期データの終わりの印の空白(B で表現する)を見付けると、 0 なしで 1 を見付けるために戻るという状態(12)に変化させます。
| 1 | B | B | 12 | L |
| 12 | 1 | B | 13 | R |
| 13 | B | B | 14 | R |
| 14 | B | 1 | 9 | L |
最終的なプログラムは次のようになります。
| 0 | B | X | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | 0 | B | 2 | R |
| 2 | 0 | 0 | 2 | R |
| 2 | 1 | 1 | 2 | R |
| 2 | B | B | 3 | R |
| 3 | B | 0 | 4 | L |
| 4 | 0 | 0 | 4 | L |
| 4 | B | B | 5 | L |
| 5 | 0 | 0 | 5 | L |
| 5 | 1 | 1 | 5 | L |
| 5 | B | B | 11 | R |
| 3 | 0 | 0 | 3 | R |
| 1 | B | B | 12 | L |
| 6 | B | B | 6 | L |
| 6 | 1 | B | 7 | R |
| 7 | B | B | 7 | R |
| 7 | 0 | 0 | 8 | R |
| 7 | 1 | 1 | 8 | R |
| 8 | 0 | 0 | 8 | R |
| 8 | 1 | 1 | 8 | R |
| 8 | B | 1 | 9 | L |
| 9 | 0 | 0 | 9 | L |
| 9 | 1 | 1 | 9 | L |
| 9 | B | B | 6 | L |
| 6 | X | B | 10 | R |
| 11 | 1 | 1 | 11 | R |
| 11 | 0 | B | 2 | R |
| 11 | B | B | 6 | L |
| 12 | 1 | B | 13 | R |
| 13 | B | B | 14 | R |
| 14 | B | 1 | 9 | L |
要するに、チューリングマシンのプログラミングはパズルを解くようなものです。
他人が書いたプログラムを試験の時だけ覚えていても何にも
ならないし、第一、意味もよく分からないものを覚えるのは苦痛以外の何者でもありません。上で解説したようにすれば、自力でプログラミングできます。
自力でプログラムが作れたら、その喜びは大変なものであり、俄然プログラミングが楽しくなり、益々、チューリングマシンに対する興味が湧いてきます。
演習問題をいくつかあげておきます。
| 0 | 0 | Z | 1 | R |
| 0 | 1 | W | 1 | R |
| 1 | 0 | 0 | 1 | R |
| 1 | 1 | 1 | 1 | R |
| 1 | + | + | 1 | R |
| 1 | = | = | 2 | L |
| 2 | 0 | Y | 4 | L |
| 2 | 1 | Y | 5 | L |
| 3 | 0 | Y | 5 | L |
| 3 | 1 | Y | 6 | L |
| 4 | + | + | 7 | L |
| 5 | + | + | 8 | L |
| 6 | + | + | 9 | L |
| 7 | X | X | 7 | L |
| 8 | X | X | 8 | L |
| 9 | X | X | 9 | L |
| 7 | 0 | X | 10 | R |
| 7 | 1 | X | 11 | R |
| 8 | 0 | X | 11 | R |
| 8 | 1 | X | 12 | R |
| 9 | 0 | X | 12 | R |
| 9 | 1 | X | 13 | R |
| 10 | 0 | 0 | 10 | R |
| 10 | 1 | 1 | 10 | R |
| 10 | + | + | 10 | R |
| 10 | = | = | 10 | R |
| 10 | X | X | 10 | R |
| 10 | Y | Y | 10 | R |
| 11 | 0 | 0 | 11 | R |
| 11 | 1 | 1 | 11 | R |
| 11 | + | + | 11 | R |
| 11 | = | = | 11 | R |
| 11 | X | X | 11 | R |
| 11 | Y | Y | 11 | R |
| 12 | 0 | 0 | 12 | R |
| 12 | 1 | 1 | 12 | R |
| 12 | + | + | 12 | R |
| 12 | = | = | 12 | R |
| 12 | X | X | 12 | R |
| 12 | Y | Y | 12 | R |
| 13 | 0 | 0 | 13 | R |
| 13 | 1 | 1 | 13 | R |
| 13 | + | + | 13 | R |
| 13 | = | = | 13 | R |
| 13 | X | X | 13 | R |
| 13 | Y | Y | 13 | R |
| 10 | B | B | 14 | L |
| 11 | B | B | 15 | L |
| 12 | B | B | 16 | L |
| 13 | B | B | 17 | L |
| 14 | 0 | B | 18 | R |
| 14 | 1 | B | 19 | R |
| 15 | 0 | B | 20 | R |
| 15 | 1 | B | 21 | R |
| 16 | 0 | B | 22 | R |
| 16 | 1 | B | 23 | R |
| 17 | 0 | B | 24 | R |
| 17 | 1 | B | 25 | R |
| 18 | B | 0 | 14 | L |
| 19 | B | 1 | 14 | L |
| 20 | B | 0 | 15 | L |
| 21 | B | 1 | 15 | L |
| 22 | B | 0 | 16 | L |
| 23 | B | 1 | 16 | L |
| 24 | B | 0 | 17 | L |
| 25 | B | 1 | 17 | L |
| 14 | B | B | 14 | L |
| 15 | B | B | 15 | L |
| 16 | B | B | 16 | L |
| 17 | B | B | 17 | L |
| 14 | = | = | 26 | R |
| 15 | = | = | 27 | R |
| 16 | = | = | 28 | R |
| 17 | = | = | 29 | R |
| 26 | B | 0 | 2 | L |
| 27 | B | 1 | 2 | L |
| 28 | B | 0 | 3 | L |
| 29 | B | 1 | 3 | L |
| 2 | = | = | 2 | L |
| 3 | = | = | 3 | L |
| 2 | Y | Y | 2 | L |
| 3 | Y | Y | 3 | L |
| 2 | + | + | 30 | L |
| 3 | + | + | 31 | L |
| 30 | X | X | 30 | L |
| 31 | X | X | 31 | L |
| 30 | Z | X | 32 | R |
| 30 | W | X | 33 | R |
| 31 | Z | X | 33 | R |
| 31 | W | X | 34 | R |
| 7 | Z | X | 32 | R |
| 7 | W | X | 33 | R |
| 8 | Z | X | 33 | R |
| 8 | W | X | 34 | R |
| 9 | Z | X | 34 | R |
| 9 | W | X | 35 | R |
| 32 | X | X | 32 | R |
| 32 | + | + | 32 | R |
| 32 | Y | Y | 32 | R |
| 32 | = | = | 32 | R |
| 32 | 0 | 0 | 32 | R |
| 32 | 1 | 1 | 32 | R |
| 33 | X | X | 33 | R |
| 33 | + | + | 33 | R |
| 33 | Y | Y | 33 | R |
| 33 | = | = | 33 | R |
| 33 | 0 | 0 | 33 | R |
| 33 | 1 | 1 | 33 | R |
| 34 | X | X | 34 | R |
| 34 | + | + | 34 | R |
| 34 | Y | Y | 34 | R |
| 34 | = | = | 34 | R |
| 34 | 0 | 0 | 34 | R |
| 34 | 1 | 1 | 34 | R |
| 35 | X | X | 35 | R |
| 35 | + | + | 35 | R |
| 35 | Y | Y | 35 | R |
| 35 | = | = | 35 | R |
| 35 | 0 | 0 | 35 | R |
| 35 | 1 | 1 | 35 | R |
| 32 | B | B | 36 | L |
| 33 | B | B | 37 | L |
| 34 | B | B | 38 | L |
| 35 | B | B | 39 | L |
| 36 | 0 | B | 40 | R |
| 36 | 1 | B | 41 | R |
| 37 | 0 | B | 42 | R |
| 37 | 1 | B | 43 | R |
| 38 | 0 | B | 44 | R |
| 38 | 1 | B | 45 | R |
| 39 | 0 | B | 46 | R |
| 39 | 1 | B | 47 | R |
| 40 | B | 0 | 36 | L |
| 41 | B | 1 | 36 | L |
| 42 | B | 0 | 37 | L |
| 43 | B | 1 | 37 | L |
| 44 | B | 0 | 38 | L |
| 45 | B | 1 | 38 | L |
| 46 | B | 0 | 39 | L |
| 47 | B | 1 | 39 | L |
| 36 | B | B | 36 | L |
| 37 | B | B | 37 | L |
| 38 | B | B | 38 | L |
| 39 | B | B | 39 | L |
| 36 | = | = | 48 | R |
| 37 | = | = | 49 | R |
| 38 | = | = | 50 | R |
| 39 | = | = | 51 | R |
| 48 | B | 0 | -1 | R |
| 49 | B | 1 | -1 | R |
| 50 | B | 0 | 52 | R |
| 51 | B | 1 | 52 | R |
| 52 | 0 | 0 | 52 | R |
| 52 | 1 | 1 | 52 | R |
| 52 | B | B | 53 | L |
| 53 | 0 | B | 54 | R |
| 53 | 1 | B | 55 | R |
| 54 | B | 0 | 53 | L |
| 55 | B | 1 | 53 | L |
| 53 | B | B | 53 | L |
| 53 | = | = | 56 | R |
| 56 | B | 1 | -1 | R |
| 30 | 0 | X | 57 | R |
| 30 | 1 | X | 58 | R |
| 31 | 0 | X | 58 | R |
| 31 | 1 | X | 59 | R |
| 57 | X | X | 57 | R |
| 57 | + | + | 57 | R |
| 57 | Y | Y | 57 | R |
| 57 | = | = | 57 | R |
| 57 | 0 | 0 | 57 | R |
| 57 | 1 | 1 | 57 | R |
| 58 | X | X | 58 | R |
| 58 | + | + | 58 | R |
| 58 | Y | Y | 58 | R |
| 58 | = | = | 58 | R |
| 58 | 0 | 0 | 58 | R |
| 58 | 1 | 1 | 58 | R |
| 59 | X | X | 59 | R |
| 59 | + | + | 59 | R |
| 59 | Y | Y | 59 | R |
| 59 | = | = | 59 | R |
| 59 | 0 | 0 | 59 | R |
| 59 | 1 | 1 | 59 | R |
| 57 | B | B | 60 | L |
| 58 | B | B | 61 | L |
| 59 | B | B | 62 | L |
| 60 | 0 | B | 63 | R |
| 60 | 1 | B | 64 | R |
| 61 | 0 | B | 65 | R |
| 61 | 1 | B | 66 | R |
| 62 | 0 | B | 67 | R |
| 62 | 1 | B | 68 | R |
| 63 | B | 0 | 60 | L |
| 64 | B | 1 | 60 | L |
| 65 | B | 0 | 61 | L |
| 66 | B | 1 | 61 | L |
| 67 | B | 0 | 62 | L |
| 68 | B | 1 | 62 | L |
| 60 | B | B | 60 | L |
| 61 | B | B | 61 | L |
| 62 | B | B | 62 | L |
| 60 | = | = | 69 | R |
| 61 | = | = | 70 | R |
| 62 | = | = | 71 | R |
| 69 | B | 0 | 2 | L |
| 70 | B | 1 | 2 | L |
| 71 | B | 0 | 3 | L |
| 4 | 0 | 0 | 72 | L |
| 4 | 1 | 1 | 72 | L |
| 5 | 0 | 0 | 73 | L |
| 5 | 1 | 1 | 73 | L |
| 6 | 0 | 0 | 74 | L |
| 6 | 1 | 1 | 74 | L |
| 72 | 0 | 0 | 72 | L |
| 72 | 1 | 1 | 72 | L |
| 73 | 0 | 0 | 73 | L |
| 73 | 1 | 1 | 73 | L |
| 74 | 0 | 0 | 74 | L |
| 74 | 1 | 1 | 74 | L |
| 72 | + | + | 75 | L |
| 73 | + | + | 76 | L |
| 74 | + | + | 77 | L |
| 75 | X | X | 75 | L |
| 76 | X | X | 76 | L |
| 77 | X | X | 77 | L |
| 75 | 0 | X | 10 | R |
| 75 | 1 | X | 11 | R |
| 76 | 0 | X | 11 | R |
| 76 | 1 | X | 12 | R |
| 77 | 0 | X | 12 | R |
| 77 | 1 | X | 13 | R |
| 75 | Z | X | 78 | R |
| 75 | W | X | 79 | R |
| 76 | Z | X | 79 | R |
| 76 | W | X | 80 | R |
| 77 | Z | X | 80 | R |
| 77 | W | X | 81 | R |
| 78 | X | X | 78 | R |
| 78 | + | + | 78 | R |
| 78 | 0 | 0 | 78 | R |
| 78 | 1 | 1 | 78 | R |
| 78 | Y | Y | 78 | R |
| 78 | = | = | 78 | R |
| 79 | X | X | 79 | R |
| 79 | + | + | 79 | R |
| 79 | 0 | 0 | 79 | R |
| 79 | 1 | 1 | 79 | R |
| 79 | Y | Y | 79 | R |
| 79 | = | = | 79 | R |
| 80 | X | X | 80 | R |
| 80 | + | + | 80 | R |
| 80 | 0 | 0 | 80 | R |
| 80 | 1 | 1 | 80 | R |
| 80 | Y | Y | 80 | R |
| 80 | = | = | 80 | R |
| 81 | X | X | 81 | R |
| 81 | + | + | 81 | R |
| 81 | 0 | 0 | 81 | R |
| 81 | 1 | 1 | 81 | R |
| 81 | Y | Y | 81 | R |
| 81 | = | = | 81 | R |
| 78 | B | B | 82 | L |
| 79 | B | B | 83 | L |
| 80 | B | B | 84 | L |
| 81 | B | B | 85 | L |
| 82 | 0 | B | 86 | R |
| 82 | 1 | B | 87 | R |
| 83 | 0 | B | 88 | R |
| 83 | 1 | B | 89 | R |
| 84 | 0 | B | 90 | R |
| 84 | 1 | B | 91 | R |
| 85 | 0 | B | 92 | R |
| 85 | 1 | B | 93 | R |
| 86 | B | 0 | 82 | L |
| 87 | B | 1 | 82 | L |
| 88 | B | 0 | 83 | L |
| 89 | B | 1 | 83 | L |
| 90 | B | 0 | 84 | L |
| 91 | B | 1 | 84 | L |
| 92 | B | 0 | 85 | L |
| 93 | B | 1 | 85 | L |
| 82 | B | B | 82 | L |
| 83 | B | B | 83 | L |
| 84 | B | B | 84 | L |
| 85 | B | B | 85 | L |
| 82 | = | = | 94 | R |
| 83 | = | = | 95 | R |
| 84 | = | = | 96 | R |
| 85 | = | = | 97 | R |
| 94 | B | 0 | 98 | L |
| 95 | B | 1 | 98 | L |
| 96 | B | 0 | 99 | L |
| 97 | B | 1 | 99 | L |
| 98 | = | = | 98 | L |
| 99 | = | = | 99 | L |
| 98 | Y | Y | 98 | L |
| 99 | Y | Y | 99 | L |
| 98 | 0 | Y | 78 | R |
| 98 | 1 | Y | 79 | R |
| 99 | 0 | Y | 79 | R |
| 99 | 1 | Y | 80 | R |
| 98 | + | + | -1 | R |
| 99 | + | + | 100 | R |
| 100 | Y | Y | 100 | R |
| 100 | = | = | 100 | R |
| 100 | 0 | 0 | 100 | R |
| 100 | 1 | 1 | 100 | R |
| 100 | B | B | 101 | L |
| 101 | 0 | B | 102 | R |
| 101 | 1 | B | 103 | R |
| 102 | B | 0 | 101 | L |
| 103 | B | 1 | 101 | L |
| 101 | B | B | 101 | L |
| 101 | = | = | 104 | R |
| 104 | B | 1 | -1 | R |



