Xlife は John Conway さんのライフ・ゲーム (Game of Life) を実行するプログラムです。非常に高速、かつ 42 億 x 42 億セルという広大な空間 (実質的に境界がない) を持っています。 ルールを変更することもでき、オリジナルの 2-state だけでなく 8-state まで拡張されています。
(右図は下で解説している puffertrain の 132 世代目のパターンです。 クリックすると大きく表示します。)
作者: Jon Bennett さん、
Eric S. Raymond さん 他
入手先:
http://ibiblio.org/pub/Linux/science/ai/life/
バージョン: 5.0 (1995/11/12)
ライセンス: distributable
付属ドキュメント README を読む
インストールしたら、 ターミナル・エミュレータから
$ xlife
で起動します。
'?
' を打つと
へルプ画面
が表示されます。終了は
'Q
' です。
ライフ・ゲーム の考案者は John H Conway さんですが、Martin Gardner さんによって Scientific American の 1970 年 10 月号に紹介されてから大きな反響を呼びました。
ライフ・ゲームの規則は簡単です。
碁盤のような格子のマス目(セル)を考えます。
セルには1個の生命がいるか、いないか、どちらかです。
Xlife では生命のいるセルは白で、いないセルは黒で表します。
あるセルに注目すると、隣接するセル (neighborhood) は斜めも含めて8つあります。
Xlife ではこのルールを 23/3
と表現します。
なぜこのルールで「ライフ」ゲームと呼ばれるのかは、Xlife の初期状態から、
-
' を 3 回打ってスケールを 1 にし、
!
' でランダムに生命を誕生させ、
g
' で世代の進行を開始する
と実感できます。しかし、多くの人がライフ・ゲームに熱狂したのはむしろ、 単純なパターンが意外な変化を見せることがあるからでしょう。
例えば、左のパターンは、glider (グライダー) という名が付いていて、4
世代ごとのパターンを繰り返しながら右下方向に移動していきます。
パターンの編集は、マウスの左ボタンクリックで生命を置き、
右ボタンクリックで取り除きます。
視野の移動はカーソルキーまたはテンキーで行ないます。
へルプ画面の説明では hjkl
なども移動キーになっていますが、
現在はそのような割り当てにはなっていません。
Xlife は非常に高速なので、
この程度のパターンだとあっという間に飛び去ってしまいます。
コマンド o
(小文字の オー) で 1 世代ごとのコマ送りができます。
また f
、m
、s
でそれぞれ
速い、中ぐらい、遅い、の速度調節ができます。
このパターン rpentomino (r 型ペントミノ) は 華麗な変身を見せてくれます。
glider を 6 機発射して 1103 世代目でやっと準定常的
(もちろん glider は飛び続けていますが) な状態になります。
たいていのパターンは、いずれは消滅するか、静止あるいは周期的な定常状態になります。 最初 Conway さんは、有限個のセルから出発する限り無限にセルが増殖することはないと考えていたようです。 ところが、glider を無限に発射する glidergun (グライダー銃 : 下図) の発見によって、この予想は見事に破られました。
他にも次々とおもしろいパターンが発見されました。 右の puffertrain (汽車ポッポ) は、煙を残しながら 右方向に進み続けます。
これらのパターンは /usr/share/xlife/
にファイルとして用意されています。
例えば puffertrain は puffertrain.l
というファイルです。
このディレクトリは Xlife のサーチパスになっているので、
ファイル名 (最後の“.l
”は付けなくてもよい)
だけでコマンド l
(小文字のエル) でロードすることができます。
'l
' と打つと画面下に Load from:
と出ますから
puffertrain
と入力してリターンキーを押します。
するとマウスカーソルの位置にパターンが現れます。
この状態では、左ボタンのクリックで位置の移動、
中ボタンで上下の反転、右ボタンで 90 度の回転ができます。
'I
' を打つと確定します
(コマンド g
や o
では自動で確定してから世代を進めます)。
Xlife のサーチパスはやや特殊で、デフォルトのパスは、
カレントディレクトリ、つぎに /usr/share/xlife/
ですが、
それぞれのディレクトリについて
まずサブディレクトリの下を探し、見つからなければディレクトリの直下を探します。
環境変数 LIFEPATH
でサーチパスを変更することができます。
なお、/usr/share/xlife/
にあるパターンには
Xlife で読み込めない形式のものも含まれているようです。
Xlife は Conway さんのライフ・ゲームとは違うルールを使うことができます。
ルールをすこし変えるだけでまったく違うパターンが現れます。
例えば 5/12
では1個の生命だけが存在する状態から 80 世代くらいで
右のように美しい絨毯のような模様になり、
さらに世代を進めるにつれて広がっていきます。
ルールの変更コマンドは R
です。
'R
' と打つと画面下に入力プロンプトが出ますから
5/12
と入力し、リターンキーを押します。
いろいろルールを変えて試してみると、23/3
というルールは「ライフ・ゲーム」の名にふさわしい絶妙なルールであることが
よく分かります。
ライフ・ゲームは、理論としては「セル・オートマトン」と呼ばれるものの一つです。 ライフ・ゲームでは、生命があるかないかの2つの状態 (2-state) を扱いますが、Xlife では3以上 (8まで) の state を持つルールも扱えます。ただし、隣接セル は上下左右の4つのみ (4-neighborhood) となります。
/usr/share/xlife/wireworld
ディレクトリには
4-state のルール wireworld.r
といくつかのサンプルパターンがあります。
Wireworld
は、1990 年に Dewdney さんが発表したもので、
元は 8-neighborhood のルールなので Xlife では正しく動作しません。
しかし少し修正 (wire4.r)
すれば動作させることができます。このルールでの diode
(diode_w4.l) は、下図のように
コマンドの詳細は man page を参照 (man xlife
) してください。
その他の情報は /usr/share/doc/xlife-5.0/doc/
にあります。
LinuxMLD 5,6,7 用の RPM
xlife-5.0-1_mlb3.i386.rpm (216,085 bytes)
をインストールします。
rpm コマンドでインストールするには、スーパーユーザになって
# rpm -i xlife-5.0-1_mlb3.i386.rpm
とします。
MLD 5,6 では
Gnome の GUI でインストールすることもできます。
オリジナルの Xlife 5.0 ではいくつか不具合
(特にパターンの編集や N-state の動作など)
が見つかったので、修正を行ないました。
2003-10-15: glibc 2.3 に対応するようにしました。
Web 上の参考になるページを御紹介します。
ライフゲームの分かりやすい解説と、 Macintosh 用のプログラム“ライフゲーム入門”を公開しておられます。
ライフゲーム保存会のデータを移管したのだそうです。 Java によるプログラム (アプレット、iAppli)、初期パターン集などがあります。
パターンのコレクション、アプレット、リンク集があります。
その他のアプリケーション
Xlife よりもパターンを編集する機能を豊富に備えているようです。 このページには Life Game に関係したプログラムやデータがたくさんあります。Bell さんは Calc (C-style arbitrary precision calculator) の原作者でもあります。
セルオートマトンのシミュレータは上記 Cellular Automata FAQ の Cellular automata software のページでいくつか紹介されていますが、例えば
a set of Xwindow programs for exploring cellular automata.
チューリングマシンもセルオートマトンの一種です。
gTuring のページ も参照してください。