ライフゲーム #3

前述のテストデータでは単純すぎるので、
それより少しだけ複雑な、でも分かりやすいものを作成してみる。

blinker_0.gv
graph {
  n0_0 -- n0_1 -- n0_2 -- n0_3 -- n0_4;
  n1_0 -- n1_1 -- n1_2 -- n1_3 -- n1_4;
  n2_0 -- n2_1 -- n2_2 -- n2_3 -- n2_4;
  n3_0 -- n3_1 -- n3_2 -- n3_3 -- n3_4;
  n4_0 -- n4_1 -- n4_2 -- n4_3 -- n4_4;
  n0_0 -- n1_0 -- n2_0 -- n3_0 -- n4_0;
  n0_1 -- n1_1 -- n2_1 -- n3_1 -- n4_1;
  n0_2 -- n1_2 -- n2_2 -- n3_2 -- n4_2;
  n0_3 -- n1_3 -- n2_3 -- n3_3 -- n4_3;
  n0_4 -- n1_4 -- n2_4 -- n3_4 -- n4_4;
  n0_0 -- n1_1 -- n2_2 -- n3_3 -- n4_4;
  n0_1 -- n1_2 -- n2_3 -- n3_4;
  n0_2 -- n1_3 -- n2_4;
  n0_3 -- n1_4
  n1_0 -- n2_1 -- n3_2 -- n4_3;
  n2_0 -- n3_1 -- n4_2;
  n3_0 -- n4_1
  n0_4 -- n1_3 -- n2_2 -- n3_1 -- n4_0;
  n0_3 -- n1_2 -- n2_1 -- n3_0;
  n0_2 -- n1_1 -- n2_0;
  n0_1 -- n1_0;
  n1_4 -- n2_3 -- n3_2 -- n4_1;
  n2_4 -- n3_3 -- n4_2;
  n3_4 -- n4_3;

  n1_2 [alive=1];
  n2_2 [alive=1];
  n3_2 [alive=1];
}

前半のエッジ定義部分で25個のノードを5x5のメッシュに配置し、
基本的にノードの次数は8になるようにしている。
ただし、メッシュの端に位置するノードはそれより低い次数をもっており、
メッシュ辺で5、端頂点で3となる。
トーラス状に接続して端を無くすることも考えたが、とりあえず単純に。
後半の3行で25個のノードのうちalive属性を付与するノードを定義している。
メッシュ中央の3個のノードにalive属性を付与し線状に並べてある。

エッジの定義に関しては、25個程度のノードでもこの有様であるので、
もっとノードを増やして広い範囲を見たい場合のために、
手書きでなく自動生成することを考えないといけないだろう。