p5.jsで6角形セルのライフゲームを作ってみた はコメントを受け付けていません。
「ジェネラティブ・アート」で紹介されている「ライフゲーム」のプログラム(Processing用)は、セル・オートマトン(CA)のフレームワークとして大変よくできていて、前のエントリで紹介した3つの派生形は、いずれも世代更新のルールやセルのプロパティなどをちょっとずつ変えて実現しています。
といった方針をボンヤリと思い浮かべながら作ってみたのが、こちらになります。
初期状態で各セルが「生」状態になる確率は約17%。ルールとしては、いろいろ試して、
・セルが「生」のとき、隣接セルの「生」の数が1~3個であれば、次世代でも「生」。0個もしくは4~6個のときは「死」となる
あと、セルの属性として「年齢」を加えており、そのセルが「生」である状態が長ければ長いほど「高齢」になるようにしました。一度「死」状態になって、再度「生」になった場合は再び1からカウントします。
ぜひ何度か実際に動かしてみてほしいのですが、初期状態に応じて、だいたい10回に4回くらいはすぐに収束してしまい、5回は徐々に「活性化」している範囲が広がって画面全体を覆い尽くします。
あと、各セルの表示位置も偶数列と奇数列で分けて計算しなければなりません。なんか、当初、頭の中で計算して出した調整量ではうまくいかず、最終的に表示見ながら目分量で調整してしまったのですが、とりあえずイイ感じになったので、このくらいにしときます。
ここ数回にわたっていじってきた2次元のCAフレームワーク。「あるセルの状態が、隣接セルの状態で変化していく」という現象を記述したい場合にとても使い勝手が良いです。で、例えば「現世代で自分の隣にあるセルの状態を、次世代でそのまま引き継ぐ」ようなルールを作ってやると、いわゆる「電光掲示板」みたいな出力になります。