はじめに
メリークリスマス🎄
この記事はあくあたん工房 AdventCalendar 2020 の 24 日目の記事です。
多種多様な記事が集まっているのでぜひご覧いただければと思います.
この記事ではライフゲームについての簡単な解説と色々なライフゲームについて紹介したいと思います.
ライフゲームとは
1970 年に考案されたシミュレーションゲームです. ルールは以下の通りです
- 碁盤のような格子があり,1 つの格子をセルという
- セルには「生」と「死」の 2 つの状態がある
- 次のルールに基づいて,ステップ(世代)ごとに今の世代の状態から次の世代を決定する
- 死んでいるセルに隣接する生きたセルがちょうど 3 つあれば,次の世代で誕生する(「生」になる)
- 生きているセルに隣接する生きたセルが 2 つか 3 つならば,次の世代でも生存する
- 上記以外の条件では次の世代では「死」の状態になる
つまり,過疎でも過密でもセルは死んでしまいます. 基本的には適当なセルを「生」の状態にして,その後の変化を楽しむというものです.
以下のサイトでライフゲームを遊ぶことができます kmaeda.net
正直,初めてみたときは適当に模様が動いているのを見てふーんと思い,興味を持ちませんでした. しかし,以下の動画を見て自分のライフゲームに対する印象ががらりと変わりました.
ライフゲームの世界シリーズです. 神動画なので,僕の記事を読む時間があるなら上の動画を見てほしいです. 更に時間があれば僕の記事も読んでくれると嬉しいです.
動画のネタバレになってしまうのですが,ライフゲームには色々な面白い形があります.
まず最初に以下のようなものが考案されました.
- 世代が進んでも形が変わらないもの
- 一定のパターンを繰り返すもの
- 一定のパターンを繰り返しながら移動を行うもの
有名な形には名前がついています.
次にライフゲームで無限にセルを生産することは可能なのかということが議題にあがりました. そこで考案されたのが,グライダーを無限に生産できるグライダー銃です. その後もライフゲームについては多くの考察がなされているのですが,それについてはここで紹介しても味気ないので動画をみていただければと思います.
色々なライフゲーム
note.com 振動子について詳しく解説されています.
baku89.com いろいろなルールのライフゲームが作られています. 調べたら出てきますが,「すべてがFになる」のEDがめちゃくちゃかっこいいです. 余談ですが,何年か前に買った「すべてがFになる」の小説がまだ読めていないことを思い出しました.
qiita.com これに関してはライフゲームとあまり関係ないですが,ifやforを使わないという制約を設けてプログラムを書いてるのが面白かったです.
moshg.github.io 最初はこれを実装して,色々ルールを追加して動かそうと思ってました. 時間がなく断念しましたが,Rust+WebAssemblyを試してみたいのでまた今度実装したいと思います.
booth.pm VR機器が必要ですがBOOTHに3Dライフゲームを配布している人がいました. 細かいルールはわかりませんが,3Dライフゲームでは立体方向での計算が必要なので,固定型などの形も別のものになって更に複雑になってそうですね. 映像で見ると通常のライフゲームより迫力があります.
クイズ
下の画像はある初期状態が安定するまで世代を進めたものです. いったい元はどのような形だったでしょうか?
↓答え
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
最後に
いかがでしたでしょうか? ライフゲームの魅力を伝えられていれば幸いです.
いよいよ明日はあくあたん工房 AdventCalendar 2020 最終日です. 次期代表の nishi くんがおそらく来年の抱負とかそういう感じの記事を書いてくれるんじゃないかと思うのでお楽しみに!
ちなみに,元々は1 日目の記事を 24 日の記事にして最終日へつなごうと思っていたのですが,1 日目にネタが思い浮かばず,あの記事を先に書くことになってしまいました. 僕も予約投稿しましたって言えるようになりたいです……