この記事はセルオートマトンによるCPU作成連載記事の3つ目です。(2022/12/05)
前回はセルオートマトンを実際に動く様子をお見せしながら概要を説明しましたが、今回はセルオートマトンの厳密な規則を説明します。
セルは5種類あります。どのセルもいずれか1つに該当します。
セルには次の属性があります。
属性には次の制約があります。
入力出力の向きは下の例のようにセルとセルの間のグラデーションで示しています。矢印はここでの説明のために書き加えたものです。
5種類のセルごとに、状態と遷移規則を説明します。
通常セルの状態は次のいずれかです。
通常セルの状態遷移する規則は次の通りです。
入力元がない1つもないセルでは常にOffになります。
ブラウザ上では、Onの場合に紺色、Offの場合に灰色、ただし入力元も出力先も1つもないセルは非表示としています。入力元が2つまたは出力先が2つの場合は視認しやすいよう、灰色の枠も表示します。
下の例の右下のセルは、入力元が2つあり、出力先がありません。
反転セルの状態は次のいずれかです。
反転セルの状態遷移する規則は次の通りです。
入力元がない1つもないセルでは常にOnになります。通常セルとは状態が反転します。
ブラウザ上では、反転セルは状態によらず赤色で表示しています。通常セルと同様に、入力元が2つまたは出力先が2つの場合は視認しやすいよう、灰色の枠も表示します。
交差セルの状態は次のいずれかです。
交差セルの状態遷移する規則は次の通りです。
交差セルは、縦方向と横方向とで別々に通常セルの規則を適用するものです。
ブラウザ上では、交差セルは状態によらず濃い灰色でやや小さい正方形で表示しています。
遅延セルの状態は次のいずれかです。
遅延セルの状態遷移する規則は次の通りです。
中間状態は他のセルから見たらOn状態と同じになります。出力先セルから見ると、入力元となる遅延セルが中間状態の場合はOn状態だとみなして、状態遷移規則が適用されます。要するに遅延セルとは、OnからOffになるのが通常セルに比べて1ステップ遅れるセルです。
ブラウザ上では、遅延セルは灰色の枠を表示します。そして、通常セルと同様に状態に応じて紺色または灰色で表示します。中間状態はOn状態に準じた表示になります。従って、見た目は入力元が2つまたは出力先が2つの場合の通常セルと同じです。
遅延セルはほとんど使いません。今回の連載記事でCPUを作成するところまでは一度も使いません。
ボタンセルの状態は次のいずれかです。
ボタンセルの状態遷移する規則は次の通りです。
反転Onは他のセルから見たらOn状態と同じになります。出力先セルから見ると、入力元となるボタンセルが反転On状態の場合はOn状態だとみなして、状態遷移規則が適用されます。
ボタンはブラウザ上でマウスクリックにも反応します。クリックされると、現在の状態がOffのときは反転Onに、OnのときはOnのまま、反転OnのときはOffに状態遷移します。
ブラウザ上では、反転Onの状態では反転セルと同様に赤色で表示します。それ以外の状態では通常セルと同様に状態に応じて紺色または灰色で表示します。それに加えボタン状の大きめの四角形をかぶせて表示します。
下の例では実際にボタンをクリックすることができます。
ライフゲームやワイヤワールドに比べると複雑なルールです。その分、実際の物理CPUの設計に少し近くなるはずです。