[English page]
竹内郁雄さんが「プログラミング・セミナー」 (共立出版, ISBN:978-4-320-02246-1)に収録されている「差をとって儲けよう」という記事の中で紹介されているアルゴリズムを実装しました。
要点は、生命体が居るセルはまばらなので盤面全体をくまなく舐めるのは効率が悪い。ついては生命体が居るセルのリストを維持して、そこに含まれるセルの周囲だけを操作すれば十分である、ということです。セルの検査は確かにエレガントになりましたが、結局、(t+1)の盤面を生成するために全体を舐めるので、ちょっとがっかりです。でもまぁ竹内さんの説明に素直に乗っかって実装してみました。
Python3で書いてあります。
最初はtkinterで可視化できないかと思ったんですが、ちょっと調べてみるとTkはGUIのためのツールで、人間の操作ではなくプログラムで駆動するのには向いていないことがわかったので、アドホックですがcursesを使ってみました。なので残念ながらWindowsでは動きません。
ダウンロード | 動作例