あなたの知らないライフゲームの宇宙 《前編》
こんにちは、FALと申します。note初投稿です。ふだんはProcessingでちょっとした絵やプログラムを作ったり、簡単なシューティングゲームを作ったりしています。
さいきんはライフゲームを作って遊んでました。
ということで、その話をします。
(→ 後編はこちら)
前編もくじ
◆ ライフゲームの面白さをみんな知らないのでは問題
◆ あらためて、ライフゲームとは
◆ ルールはわかったけど、それで?
◆ 古代文字のような「振動子」の数々
◆ いくつもの物体から組み立てられた機構
ライフゲームの面白さをみんな知らないのでは問題
そもそもライフゲーム自体を知らない人には次項で説明します。
一方で、基本的なルールは知ってるけど、あれの何が面白いの?? という人も多いのではないか。なぜなら私がそうだったからです。
私の周りの超狭い範囲ではありますが、アンケートを取ってみました。
「よく知らない」「何がすごいの?」という人もそこそこいらっしゃいます。
しかし言っておきたい。こんな面白いものを知らないのはもったいないぞ!
せっかくだから布教記事を書こう……ということでこの記事を書きました。
※注釈
ライフゲームは数学やその他における立派な研究分野でもありますが、この記事は学術的な観点からの解説ではないです、ご了承ください。
あらためて、ライフゲームとは
要するにこういうのです。
(画像はWikipediaより、パブリックドメイン)
いいですかここに、二次元の格子状の世界がある。
一つ一つの格子を「セル」と呼ぶ。
各セルは「生」「死」いずれかの状態を取る(上の画像では黒が「生」)。
時間(世代)が進むごとに、ある規則に従って、生死の状態が切り替わる。
規則は次の通り。
死んだセルの場合
周りに生きたセルが3つあるとき、次の世代では「生」に変わる
生きたセルの場合
周りに生きたセルが2つか3つあるとき、次の世代でも生存する
つまり過疎ったり過密ったりしたら死ぬ、ちょうど良ければ増える。
たったこれだけで、生命現象だとかいろいろ複雑なものがシミュレーションできるかもしれん! ということで数学者Conwayが考案したのが、このライフゲームです。
※注釈
この規則の2とか3とかの数字は恣意的なもので、他のルールも研究されています。全貌についてはセル・オートマトンを調べましょう。ライフゲームはそれの一種というわけです。
ルールはわかったけど、それで?
動かしてみると大して面白くないんだな、これが。
たぶんプログラミング初歩の課題とかで、実際にライフゲームを作ってみた人もいるのではないでしょうか。
そうすると分かるでしょう。ランダムにセルを並べると、すぐに死滅したり残骸が散らばったりするだけで、たぶんすぐ飽きる人が多いと思う。
(※そういう人も多いのでは? という話で、この時点でも十分面白いという人、その感性は大切になさった方が良いと思います。)
しかし、それで見限ってはいけません。
完全にランダムな状態から有機的な何かが自然発生する確率は、ものすごく低いのです。これは現実世界でもそうです(火の鳥の未来編を読もう)。
そんな中に、「秩序」が生じるとどうなるか?
驚くほど多様な現象が生じてきます。これまた現実世界と同じと言えよう。
この記事では、ライフゲームの世界で作ることのできる面白いパターンをいろいろ紹介したいと思います。
スケールの小さい順に紹介するから、できれば最後まで見てほしい。
※注釈
今回は取り上げませんが、他の状態からの遷移では絶対に到達しえないパターンというのも存在します。「エデンの園配置」と呼ばれます。
(この界隈における厨二的ネーミングセンスはなかなかのものですよ!)
イーガンの小説『順列都市』にも「エデンの園配置」の概念が出るらしい。
前から読もうとは思ってるんだけど……読まねば……。
古代文字のような「振動子」の数々
さて、ライフゲームに出てくる物体(安定した形に落ち着いたセルの配置)の大きな分類として、
・固定物体 - still life
・振動子 - oscillator
・移動物体 - spaceship
・繁殖型 - infinite growth
といったものがあります。
いずれも様々なパターンが探究・発見されていて、個別に名前が付けられたりしています。
このうち振動子というのは、一定の周期で同じ変化を繰り返すタイプです。
ちなみにさっきのこの画像は人気の振動子、『銀河』(周期8)。
他にもたくさんあります、ということで鑑賞タイムです。
こちらは、いろいろな振動子を集めて並べたものです。
全画面で見られるJavaScript版はこちら。ブラウザの機能で拡大縮小も可能!
このエキゾチックな形状の数々、完全に古代文明か地球外生命体からのメッセージですね間違いない。
数字は周期を表していて、それらも、上述の固定物体に分類される小さなパターンを並べて描いたものです。器用なことしますね。
もう少し高い周期の例がこちら。上のやつより表示スピード上げてます。
(→ 全画面で見る)
これでもまだ、全体の一部です。
[追記]
こちらの記事では「さながら小さな人工生命の標本箱」という素敵な表現をされていて、まさにという感じです。
p5.jsのライフゲームで振動子たちを愛でてみる − infosmith.biz
いくつもの物体から組み立てられた機構
物体同士がぶつかるとどうなるか。
元の物体の種類や、ぶつかった角度などによって、壊れたり、消えたり、別の物体を生み出したりと、いろいろな結果に繋がるのです。
これを利用して、複数の物体の動作をうまいこと組み合わせる。
するとどんどん複雑なものを作ることができます。
次のやつは、上述の振動子と同様、全体としては一定周期で同じ動きを繰り返しています。
(→ 全画面で見る)
基本的な振動子の時点でちょっと微生物感ありましたけど、より生き物感が出てきましたね。
この真ん中で周回している物体は『女王蜂』と呼ばれます。
女王蜂を筆頭に、往復運動する物体を『シャトル』という。
周りから飛来してきて女王蜂に食われている小さいのが『グライダー』。
ライフゲームで最も基本的な移動物体です。
外側を取り囲んでいるのが繁殖型の物体群で、グライダーを無限に生み出し続けます。そういうのは「グライダー銃」とも呼びます。
適切な場所とタイミングでグライダーが来ないと女王蜂は自壊します。
つまり一つ一つのグライダーの存在が必然であり、不可欠である。
うまくできてると思いませんか?
前編まとめ
長くなったので後編に続きます。まだぜんぜん紹介できてないよー!
とりあえずこの前編ではライフゲームについて、
・そもそも何なのか
・基本を知るだけじゃ面白さはまだ分からない、混沌の内に秩序あれかし
・なんか面白い形の物体がいろいろあって面白い(トートロジー)
・物体を組み合わせると複雑なものも作れてすごい
といったことを伝えたかったのでした。
後編もくじ
◆ 長期間に渡り不規則に変化する「長寿型」
◆ すべての歯車が噛み合った工場設備
◆ 広大な空間を流浪する巨大宇宙艦隊
◆ 演算能力を獲得した構造物
◆ すべてがライフゲームになる
※脚注
この記事で使った画像や動画は特別に記載がない限り、フリーソフトウェア Golly に同梱されたパターンのデータファイルを私が書いたプログラムで読み込んで表示したものです。使用しているデータの情報はこちら。
この記事が気に入ったらサポートをしてみませんか?