Game of Life シミュレーター(第一版)
X-window上で動く、Game of lifeのシミュレータです。ルール変更と初期状態設定ができます。
はじめに
Game of Lifeは、数学者J.H.Conwayが考案した二次元二状態セルオートマトンの一種です。
簡単な規則でありながら非常に多様な振る舞いをすることで有名で、
特に70年頃にマーティン・ガードナーがScientific Americanのコラムで取り上げたのをきっかけに、爆発的に流行しました。
いまだにファンも多く、世界中にGame of Lifeをテーマとしたホームページがたくさんありますし、フリーソフトもいろいろと流通しています。
Game of Lifeはその名前のとおり、なんらかの意味で"生命"を意識したセル・オートマトンですが、
それが"どういう意味で生命か"を説明するのは困難です。
それでも、いろいろな周期的な構造物や移動する構造物などが出現する様子を
見ているとなんとなく生命のような気がしてきます。
このモデルではあるセル(マス目)は「いる」と「いない」のふたつの状態をとります。そのセルが次の時刻でどちらの状態になるかは、そのまわりの八つのセルの状態によって決まります。つまり
という九つのセルを考え(9近傍モデル)、次の時刻での真ん中(5番)のセルの状態が、残り八つのセルの状態によって決まるとするわけです。ただし、まわりの八つのセルのうち何個が「いる」状態にあるかを数え、その数で状態が決まるとします。標準的な規則は次のようなものです
まわりの「いる」セルの数 | 0,1 | 2 | 3 | 4-8 |
現在の状態:「いる」 | いない | いる | いる | いない |
現在の状態:「いない」 | いない | いない | いる | いない |
各マスにいるのが生物だとすると、周辺にいる仲間の数が少なすぎても多すぎても生きることができず、また適当な数の生物がいるとそこに子どもが生まれるという程度の意味を表わす規則という解釈をすればいいでしょう。この規則を変えることによってさまざまなヴァリエーションが作れますが、結局のところこの標準的なlifeの規則が一番面白いようです。
準備
以下のURLから、life.tarというファイルをダウンロードしてください。
ネットスケープなら、リンクの上で右クリックして、"リンクを名前をつけて保存"をすればオッケーです。
http://www.cp.cmc.osaka-u.ac.jp/~kikuchi/kougi/simulation/life.tar
このファイルは実行ファイルと入力データをひとまとめにしたものなので、これを適当なディレクトリに置き、
tarコマンドを使って展開します。
これで、lifeという実行プログラムと、いくつかの入力データファイルのサンプルができます。
実行
このプログラムをほかになにも指定せずに実行すると、Game of lifeの標準ルールで、
ランダムj初期状態からシミュレーションを開始します。
停止ボタンなどの機能はまったくないので、やめるときは、実行コマンドを入力したウィンドウに戻って
Ctrl-C(Ctrlキーを押しながら、Cのキーを押す)で終了してください。
ルールデータファイル
このプログラムに入力データファイルをひとつだけ指定したときは、ルールのデータとみなします。
ルールのデータファイルは二行または三行からなります。
たとえば、標準ルールで初期状態の密度が0.7、乱数の初期値を12345とする場合は
0 0 1 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0.7 12345
|
とすればオッケー。最初の二行は必須で、三行めがなければ、密度0.5と乱数初期値12345に設定されます。
これにrule_life.inというファイル名をつけたとすると、このルールファイルでの実行は
初期配置データファイル
このプログラムに入力データファイルをふたつ指定したときは、ひとつめをルールデータファイル、
ふたつめを初期配置データファイルとみなします
(現ヴァージョンでは、初期配置データを与えるにはルールデータも必須です)。
初期配置は、必要なところだけを0と1で書いておけば、それを真中に配置します。
たとえば、有名なグライダー配置を指定するなら
と書くだけ。
これにglider.inというファイル名をつけたとすると、
標準ルールでの実行は
$./life rule_life.in glider.in
|
となります。
ルールデータファイルに三行め(密度と乱数初期値)があっても無視されるので、消さなくてもオッケー。
なお、配布ファイルには
- ビーコン(beacon.in)
- クロック2(clock2.in)
- グライダー(glider.in)
- グライダー発射銃(glidergun.in)
- 銀河(galaxy.in)
- シュッシュポッポ(puffer.in)
の配置データファイルが含まれているので、試してみてください。
また、
0001
00001
10001
01111
0
0
0
1
011
001
001
01
0
0
0001
00001
10001
01111
という配置データは、しゅっしゅぽっぽ列車のパターンです。興味のあるかたは自分で入力してみてください