Xlife

Xlife

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 の初期状態から、

  1. '-' を 3 回打ってスケールを 1 にし、
  2. '!' でランダムに生命を誕生させ、
  3. 'g' で世代の進行を開始する

と実感できます。しかし、多くの人がライフ・ゲームに熱狂したのはむしろ、 単純なパターンが意外な変化を見せることがあるからでしょう。

Glider 例えば、左のパターンは、glider (グライダー) という名が付いていて、4 世代ごとのパターンを繰り返しながら右下方向に移動していきます。

パターンの編集は、マウスの左ボタンクリックで生命を置き、 右ボタンクリックで取り除きます。 視野の移動はカーソルキーまたはテンキーで行ないます。 へルプ画面の説明では hjkl なども移動キーになっていますが、 現在はそのような割り当てにはなっていません。

Xlife は非常に高速なので、 この程度のパターンだとあっという間に飛び去ってしまいます。 コマンド o (小文字の オー) で 1 世代ごとのコマ送りができます。 また fms でそれぞれ 速い、中ぐらい、遅い、の速度調節ができます。

rPentomino このパターン rpentomino (r 型ペントミノ) は 華麗な変身を見せてくれます。 glider を 6 機発射して 1103 世代目でやっと準定常的 (もちろん glider は飛び続けていますが) な状態になります。

たいていのパターンは、いずれは消滅するか、静止あるいは周期的な定常状態になります。 最初 Conway さんは、有限個のセルから出発する限り無限にセルが増殖することはないと考えていたようです。 ところが、glider を無限に発射する glidergun (グライダー銃 : 下図) の発見によって、この予想は見事に破られました。

GliderGun

PufferTrain 他にも次々とおもしろいパターンが発見されました。 右の puffertrain (汽車ポッポ) は、煙を残しながら 右方向に進み続けます。

これらのパターンは /usr/share/xlife/ にファイルとして用意されています。 例えば puffertrain は puffertrain.l というファイルです。 このディレクトリは Xlife のサーチパスになっているので、 ファイル名 (最後の“.l”は付けなくてもよい) だけでコマンド l (小文字のエル) でロードすることができます。

'l' と打つと画面下に Load from: と出ますから puffertrain と入力してリターンキーを押します。 するとマウスカーソルの位置にパターンが現れます。 この状態では、左ボタンのクリックで位置の移動、 中ボタンで上下の反転、右ボタンで 90 度の回転ができます。 'I' を打つと確定します (コマンド go では自動で確定してから世代を進めます)。

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 上の参考になるページを御紹介します。

その他のアプリケーション

セルオートマトンのシミュレータは上記 Cellular Automata FAQCellular automata software のページでいくつか紹介されていますが、例えば

チューリングマシンもセルオートマトンの一種です。

gTuring のページ も参照してください。

[2001/07/25 作成] [2007/02/05 更新]


このページに関する御意見、御要望を science@mlb.co.jp までお寄せ下さい
Copyright © 2001-2007 Media Lab. All Rights Reserved.