ライフゲーム #19

Glider Gunの動きを100世代分ほどのanimated GIFにしてみる。
このサイズで100世代分のDOTとPNGを生成するのにあまり速くない手元の環境で二分程度なので速度的に遅すぎる訳ではない。
レンダリングに時間がかかるようだ。
やっていることがGraphviz本来の使い道からはちょっと外れてるとは思うので効率が悪いのは仕方がないか。

gvpr "BEGIN{int i;for(i=0;i<100;i++)system(sprintf('gvpr -cf next_gen.g glider_gun_%d.gv > glider_gun_%d.gv',i,i+1));}"
gvpr "BEGIN{int i;for(i=0;i<=100;i++)system(sprintf('gvpr -cf vis_alive.g -a .1 glider_gun_%d.gv | neato -Nlabel=\"\" -T png -o glider_gun_%d.png',i,i));}"

そして、例によってImageMagickのconvertを使って変換。コマ間160msに設定。

$ convert -loop 0 -delay 16 glider_gun_{?,??,???}.png glider_gun.gif

ファイルサイズが大きい……。2.4MBオーバーになってしまった。
はてなだと1画像ファイルあたり10MBまで大丈夫とはいえ、とりあえず減色で減量してみた。

$ convert -loop 0 -delay 16 -colors 16 glider_gun_{?,??,???}.png glider_gun_c16.gif

8色まで落とすと背景が濁ってしまったので16色指定にしてみた。
減色前より荒れているもののさほど見た目変わらず1.4MB弱まで減ったので、これを上げておく。


Glider Gunパターンの性質通り30世代に1機Gliderを放出している。