ライフゲーム #16

そういえば、gen_mesh.gが出力するものと似たようなグラフを、
Graphvizのgvgenコマンドにグリッド生成オプションを与えて、

gvgen -g 3,4 | neato -Elen=.75 -T png -o 3x4.png


のように生成することはできる。
しかし、ノード名が1から始まる連番となっていて、pos属性と関連付けるのがちょっと面倒なことと、
なにより致命的なのは四方向にあるノードへのエッジしか生成してくれないことで、
八方向へのエッジが必要なgen_mesh.gのような用途には少々使いづらい。

連番になっているname属性を"x,y"形式にするのは少し手間をかければ行えなくはない。

gvgen -g 3,4 | gvpr -c "N{int i=name-1;pos=label=sprintf('%d,%d',i/4,i%4);}" | neato -Elen=.75 ...snip...

ノードの連番形式の名前を高さで除算、剰余算することで"x,y"形式の文字列を生成し、
そのlabel属性とpos属性とをこの値に設定している。

name属性"1"のノードがlabel属性"0,0"のノードである。