素数を計算するオートマトンを実装してみた
先日のWEB+DB PRESS Vol.70で和田先生が紹介されていた素数を計算するオートマトン、面白そうだったので僕も実装してみた。
まずは出力結果から。一番左端が空白(状態0)であるとき、それは素数。最初は0〜Fを使っていたんだけどもアスキーアート的にした方が面白いのでこれでw
米 1≫ 1/: 1\> 2 :ノ2\≫ 3 米\3\≫> 4/:ノ② \> 5 米\① ≫ 6/:ノ米\ ≫> 7 米/: ノ≫> 8/米ノ:ノ |> 9/米\米\ |≫ 10/:ノ: ノ|≫> 11 米 :ノ ・≫> 12/:ノ米\ ・\> 13 米/: ノ・\≫ 14/米ノ:ノ 1\≫> 15/米\米\ 2\\> 16/:ノ: ノ3\\≫ 17 米 :ノ ② \≫> 18/:ノ米\ ① \> 19 米/: ノ米\ ≫ 20/米ノ:ノ/: \ ≫> 21/米\米X : ノ≫> 22/:ノ米 ノ: ノ |> 23 米/:ノ :ノ |≫ 24/米ノ米\ 米\ |≫> 25/米/: ノ: \ |≫> 26/米ノ:ノ : ノ|≫> 27/米\米\ : ノ ・≫> 28/:ノ: ノ:ノ ・\> 29 米 :ノ 米\ ・\≫ 30/:ノ米\/: \ ・\≫> 31 米/:/ノ: ノ・\\> 32/米ノ米ノ : ノ 1\\≫ 33/米/米\ :ノ 2\\≫> 34/米ノ: ノ米\ 3\\\> 35/米\:ノ/: \ 3 \\≫ 36/:ノ米X : ノ3 \≫> 37 米/米 ノ: ノ ② \> 38/米ノ:ノ :ノ ① ≫ 39/米\米\ 米\ 米\ ≫> 40/:ノ: ノ: \/: \ ≫> 41 米 :ノ : /ノ: \ ≫> 42/:ノ米\ :/ノ : ノ≫> 43 米/: ノ米ノ : ノ |> 44/米ノ:ノ/米\ : ノ |≫ 45/米\米X/: \ :ノ |≫> 46/:ノ米/ノ: ノ米\ |≫> 47 米/米ノ : ノ/: \ |≫> 48/米ノ米\ :ノ/ : \ |≫> 49/米/: ノ米X : ノ|≫> 50/米ノ:ノ/米 \ : ノ ・≫> 51/米\米X/: ノ: ノ ・\> 52/:ノ米/ノ: ノ :ノ ・\≫ 53 米/米ノ :ノ 米\ ・\≫> 54/米ノ米\ 米\ /: \ ・\\> 55/米/: ノ: X : \ ・\\≫ 56/米ノ:ノ :/ ノ: ノ・\\≫> 57/米\米\ 米 ノ : ノ 1\\\> 58/:ノ: ノ:ノ : ノ 2\\\≫ 59 米 :ノ 米\ :ノ 3\\\≫> 60/:ノ米\/: \ 米\ 3 \\\> 61 米/:/ノ: ノ: \ 3 \\≫ 62/米ノ米ノ : ノ : \ 3 \≫> 63/米/米\ :ノ : ノ3 \> 64/米ノ: ノ米\ : ノ ② ≫ 65/米\:ノ/: \ : ノ ① ≫> 66/:ノ米X : ノ:ノ 米\ ≫> 67 米/米 ノ: ノ 米\ /: \ ≫> 68/米ノ:ノ :ノ /: \/ : \ ≫> 69/米\米\ 米\/ : /\ : \ ≫> 70/:ノ: ノ:/\ :/ ノ: ノ≫>
実装はこんな感じ。 https://github.com/nishio/automaton/blob/master/ca.py