written by シェルスクリプトマガジン編集部
(本記事はWeb版シェルスクリプトマガジン独自記事です)
USP研究所技術研究員 ナカムラ氏謹製の、シェルスクリプト製 ライフゲーム・シミュレータをご紹介します。
インストール・設定・操作・実行のすべてがターミナル画面上で完結するので、上司の目が厳しいエンジニアの皆さまも、いかにも「仕事中です」という顔をしながら暇つぶしに勤しめます。
ライフゲームは、1970年にJohn Horton Conwayが発明したコンピュータ・ゲームです。
マス目(セル)のオンオフを生命(例えばシャーレ上に培養される微生物)に見立て、単純な規則により時間経過による生命の繁殖を表現します。
自分の周り八方のセルの密度が適度なら次のターンに培養される、過疎もしくは過密の場合は死滅します。
ルールは簡単ですが、初期状態からは想像もつかない形へと発展していく面白さがあります。。
例:代表的なパターン「グライダー」。 4世代ごとに縦横1マスずつ移動しながら元の形に戻ります。
→ → → →
ライフゲームのルール(引用元:「ライフゲイムの宇宙 新装版」ウィリアム・パウンドストーン著 有澤誠訳、日本評論社)
Wikipedia「ライフゲーム」などもご参照ください。
コードはGitHub上に公開されています。
https://github.com/kaznak/ConwayGoL.sh
ターミナル画面上で $ git clone https://github.com/kaznak/ConwayGoL.sh.git とすることでインストールできます。
1 2 3 4 5 6 7 8 9 |
$ git clone https://github.com/kaznak/ConwayGoL.sh.git Cloning into 'ConwayGoL.sh'... remote: Counting objects: 245, done. remote: Compressing objects: 100% (59/59), done. remote: Total 245 (delta 30), reused 0 (delta 0), pack-reused 181 Receiving objects: 100% (245/245), 32.93 KiB | 0 bytes/s, done. Resolving deltas: 100% (103/103), done. $ |
ConwayGOL.sh/ のディレクトリに移動し、初期化コマンド . rc を打ち込むことで準備が整います。
ライフゲームの面白さは、初期のセル配置パターンからは想像もつかない発展をとげることです。
ConwayGoL.sh/example-pattern/ に、特定の動きをする代表的なパターンが収録されています。
まずはそれらのサンプルパターンを実行してみましょう。
例えばさきほど紹介した「グライダー」を見たいときは、 ConwayGoL.sh/ ディレクトリで以下のコマンドを実行します。
1 |
$ ido 3 3 example-pattern/glider | conwaygol | play-screen |
上司に見つかりそうになったら Ctrl-C を長押しすれば終了できます。
また、一世代ごとの移り変わりを確認したいときには、conwaygolコマンドにオプションをつけます。
1 |
$ ido 3 3 example-pattern/glider | conwaygol - 2 10 10 |
conwaygolの後に続くオプションのうち、
最初の「2」は初期状態から2世代後まで(計3世代)を表示することを示します。
後ろの 10 10 は、セル全体の大きさの指定を示します。
サンプルパターンを動かしてみたら、いよいよ自分で初期パターンを作り、実行してみましょう。
まずはテキストエディタを使って、ConwayGoL.sh/example-pattern/ に初期状態のファイルをつくってみましょう。
オンのセルはX(半角の大文字X)で、オフのセルは半角スペースで打ち込みます。
それではこいつを実行してみます。
題して、「ライフゲームで占うシェルマガの未来」。
(GIFファイルです)
実行当初からどんどん形が崩れていきます。あははは、これは愉快だ。
途中からは、文字の区切りの痕跡すら残っていません。
(GIFでは飛び飛びですが)約300世代後、ふたつのパターンを繰り返す定常状態になりました。
シェルマガがこれからどんどん広まり、vol.300近くまで続くというお告げでしょうか。素晴らしい。
というわけで、USP研究所ナカムラ氏謹製 シェルスクリプト版ライフゲームのご紹介でした。
みなさまの、仕事してるフリをしながら適度にサボる、豊かなITエンジニア・ライフのお役に立てますと幸いです。
詳しい操作の仕方については、インストール後 readme もご参照ください。
シェルスクリプトマガジンは、明日すぐには役立たないけれども数年後の自分の血となり肉となる、ITエンジニアの教養満載でお届けしています。
データ分析、IoT、PM、ネットワークなど、新しい勉強を始める春にぴったり!最新号vol.47はこちらから!