前提条件: 空間は有限なグリッド(N × Mマス)で構成され、境界は繋がっている(トーラス空間)。 各セルは、以下の2つの属性を持つ。 数値 (Value): 整数、または「数値なし (None/Null)」の状態。 演算子 (Operator): +, -, * のいずれか(初期設定時に固定)。 時間経過は離散的(ステップ0, ステップ1, ...)。更新は同期式で行われる(全てのセルが同時に次のステップの状態へ移行する)。 手続き (ステップt から ステップt+1 への更新): ステップ \(t+1\) の状態を計算するために、以下の手順を全てのセルに対して同時に適用する。 新しいグリッドの準備:ステップ \(t+1\) の数値状態を保持するための、空の新しいグリッドを用意する(初期値は全て「数値なし」)。全セル走査:グリッド内の各セル \(C_{t}(r,c)\)(行 \(r\)、列 \(c\))に対して、以下の判定と計算を行う。ルール①の適用(数値の消失判定):もしセル \(C_{t}(r,c)\) が「数値なし」状態であれば、何もしない(ステップ \(t+1\) の対応するセルも「数値なし」のまま)。もしセル \(C_{t}(r,c)\) が「数値あり」状態であれば、中心とした3×3の範囲(セル \(C_{t}(r,c)\) 自身を除く周囲8マス、トーラス空間の境界を考慮)を検査する。検査の結果、周囲8マスのうち1つでも「数値なし」のマスが存在した場合、セル \(C_{t+1}(r,c)\) は「数値なし」状態となる。ルール②の適用(計算と更新):もしルール①の条件に当てはまらなかった場合(すなわち、中心セル自身と周囲8マス全てに数値が存在した場合)、以下の計算手順に進む。中心セル \(C_{t}(r,c)\) の持つ演算子 (Operator) を取得する。中心セルの現在の数値 (Value) を初期値として設定する。計算順序の指定:周囲8マスの数値を取得し、指定された以下の時計回りの順序で順番に計算を適用する。上右上右右下下左下左左上計算結果は全て整数として扱い、セル \(C_{t+1}(r,c)\) の新しい数値 (Value) とする。ステップの完了:全てのセルに対する処理が完了したら、新しいグリッドを次のステップ \(t+1\) の状態として確定する。
↑AIにいい感じにしてもらった説明 読みづらいですね ※このプロジェクトでシミュレーションできるわけではありません。どなたか作品にしていただける方がいらっしゃったら、作成をお願いしたい次第です。