地図/創発/グリッド

二次元へ — ライフゲーム

各セルは生きているか死んでいるかの2状態。生きている隣(斜めも入れた8マス)の数を数えて、自分が生きているなら隣が 2 か 3 で生き残り、死んでいるならちょうど 3 で生まれる。それ以外は死ぬ。コンウェイのライフゲームのルール。

決まった形を一つ置くと、ルールを当て続けるだけで形が動く。下は左下に5マスの形(グライダー)を置き、端を巻く住所引き idx と8近傍カウントでルールを適用したもの。alive ? n === 2 || n === 3 : n === 3 の一行が生死を決める。読む面 grid と書く面 next を分けて、1世代ごとに入れ替える。マスは正方形のまま、列数 cols と行数 rows をそれぞれ幅と高さから取って全面に敷く。

5マスの形が崩れずに、4世代で1マスぶん斜めにずれて元の形へ戻る。盤面のどこにも「滑れ」とは書いていないのに、同じルールを当て続けるだけで形が移動する。端まで行くと idx の巻きで反対側から出てくる。

決まった形でなくランダムな初期配置から始めると、別の表情が出る。各マスを 28% の確率で生きた状態に撒き、同じ8近傍カウントと同じ生死ルールを面全体に毎世代当てる。個体数が動かなくなったら撒き直す。

ばらけた点の大半は数十世代で消えるか、静物と振動子の散らばりに落ち着く。あいだを斜めに滑るグライダーがときどき横切る。個体数が変わらなくなったら seed で撒き直すので、また別の初期配置から育ち直す。Math.random() < 0.28 の密度を上げると生まれが多すぎて潰れ、下げると早く消える。

ライフは生まれ(Birth)が隣3、生存(Survival)が隣2か3なので B3/S23 と書く。John Conway が 1970 年に、自己増殖の最小ルールを探す中で見つけたもの。生存条件の数字を変えると別の世界になり、B36/S23 は HighLife で、自分のコピーを吐くレプリケータが現れる。ライフは万能チューリングマシンを組めることが示されていて、生死2状態と8近傍だけの局所ルールで任意の計算ができる。