別の方法:https://www.google.com/search?q=conway%27s+game+of+life
Twitterで知った、Mathematicaによるワンライナー・ライフゲーム。
「ライフゲームとは何か?」とか「224って何?」という疑問には後で答えるとして、とりあえず動かしてみる(RSS Readerでは何も見えないかもしれないが、Wolfram CDF Playerがインストールされていれば実際に動かすことができる。
ListAnimate[ArrayPlot/@ CellularAutomaton[{224,{2,{{2,2,2},{2,1,2},{2,2,2}}},{1,1}},{RandomInteger[1,{9,9}],0},90]]
Ver. 11.1以降では次のようにも書けます。
ListAnimate[ArrayPlot/@ CellularAutomaton["GameOfLife",{RandomInteger[1,{9,9}],0},90]]
ライフゲームをこんなに短く書けることに驚く。どのくらい短いかというと、Mathematicaの開発元であるWolfram社のトップ、Wolfram氏の著書A New Kind of Science(iPad版)に載っているコードよりも短い、しかも汎用的(「ウラムの珊瑚礁」なんかは自信ないが)。おそらく、この本に載っているような研究をしやすくするためにMathematicaに導入されたのだろう、関数CellularAutomatonは、ライフゲームに限らず一般的なセル・オートマトンに対応している。
ちなみに、上の例で使っている「グライダー」を、ハッカー・エンブレムにしよう、という話がかつてあった。
これは、ライフゲームの広い世界の入り口でしかない。さらに探索したいという人には、パウンドストーン「ライフゲイムの宇宙」(日本評論社, 2003)やクヌース「コンピュータ科学者がめったに語らないこと」(エスアイビー・アクセス, 2003)がおすすめ。