ワンライナー・ライフゲーム


別の方法:https://www.google.com/search?q=conway%27s+game+of+life

Twitterで知った、Mathematicaによるワンライナー・ライフゲーム

「ライフゲームとは何か?」とか「224って何?」という疑問には後で答えるとして、とりあえず動かしてみる(RSS Readerでは何も見えないかもしれないが、Wolfram CDF Playerがインストールされていれば実際に動かすことができる。UMMでも動く)。

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 ScienceiPad版)に載っているコードよりも短い、しかも汎用的(「ウラムの珊瑚礁」なんかは自信ないが)。おそらく、この本に載っているような研究をしやすくするためにMathematicaに導入されたのだろう、関数CellularAutomatonは、ライフゲームに限らず一般的なセル・オートマトンに対応している。


ちなみに、上の例で使っている「グライダー」を、ハッカー・エンブレムにしよう、という話がかつてあった。

これは、ライフゲームの広い世界の入り口でしかない。さらに探索したいという人には、パウンドストーン「ライフゲイムの宇宙」(日本評論社, 2003)クヌース「コンピュータ科学者がめったに語らないこと」(エスアイビー・アクセス, 2003)がおすすめ。

45357838374434036173

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です