どう書く?org : ライフゲーム

original page : http://ja.doukaku.org/126/

セルオートマトンに関するお題です.
2次元タイプの'ライフゲーム'を実装して下さい.
初期値としては10行10列程度の格子上の平面に0.3程度の人口(?)密度を考え,
末端はループするようにして下さい. (例: 座標[-1, -1] = [10, 10])

それだけだと簡単すぎると思われる方は,
過密状態で間引きが発生するような機能を組み込んで下さい.
間引きは, 少なくともその後の1時間ステップにおける死亡率が,
それをしなかった場合よりも小さくなれば結構です.
(死亡率の最小化は複雑性が高すぎる感がありますし. )
サンプル:
t = 0
[ ][*][ ][ ][ ][ ][*][*][*][ ]
[ ][ ][ ][ ][*][ ][ ][*][*][ ]
[ ][ ][ ][*][ ][ ][*][ ][*][ ]
[*][ ][*][*][ ][ ][*][ ][ ][ ]
[ ][*][ ][ ][ ][ ][ ][ ][*][ ]
[*][ ][ ][ ][*][ ][*][*][ ][*]
[ ][*][ ][ ][ ][ ][*][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][*]
[*][ ][ ][ ][ ][ ][*][ ][ ][*]
[ ][ ][ ][ ][*][*][ ][ ][*][ ]
t = 1
[ ][ ][ ][ ][*][ ][ ][ ][ ][*]
[ ][ ][ ][ ][ ][*][ ][ ][ ][*]
[ ][ ][*][ ][*][*][*][ ][*][*]
[ ][*][ ][*][ ][ ][ ][ ][ ][*]
[ ][ ][*][*][ ][*][*][ ][*][ ]
[ ][*][ ][ ][ ][*][*][ ][*][*]
[ ][ ][ ][ ][ ][*][*][*][*][*]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][*]
[*][ ][ ][ ][ ][*][ ][ ][*][ ]
[*][ ][ ][ ][ ][ ][ ][ ][ ][ ]

#6802

original page : http://ja.doukaku.org/comment/6802/

厳密にはお題に沿ってないかもしれませんが、ネタ的に。

simecolパッケージに、conwayのライフゲーム用のオブジェクトデータが用意されています。

library(simecol)

size <- 10
m <- matrix(0, size, size)
m[sample(size^2, size^2*0.3)] <- 1

data(conway)
init(conway)  <- m
times(conway) <- c(from=1, to=100, by=1)

sim(conway, animate=TRUE, delay=1, axes=FALSE)