ライフゲーム/OTCAmetapixel

Last-modified: 2023-08-26 (土) 14:00:35

このページではライフゲーム(Conway's Game of Life)のパターンの1つであるOTCA metapixelについて解説する。

OTCA metapixelとは

OTCA metapixel(Outer Totalistic Cellular Automata Meta Pixel、OTCAMP)は、Brice Dueによって2005年秋から2006年春にかけて構築された、周期35328世代、サイズ2048×2048セル(ただしパターン単体のサイズは2058×2058セル)のunit cellに分類されるパターンである。ライフゲームのような外部総和型セル・オートマトンをエミュレートすることができ、セルのON/OFFをズームアウトした状態でも簡単に確認することができる。

パターンの設置と設定

Gollyを使用している場合は、範囲選択した任意のパターンをそのままOTCAMP上のメタセルに変換できるPythonスクリプト(metafier.py)が同梱されているため、簡単に設置することが可能である。

手動で並べる場合は、OTCAMPの四隅にあるブロックが隣接するOTCAMPの四隅のブロックと完全に重なるように配置する。並べられたOTCAMPのサイズは2048×2048セルになるが、OTCAMP単体のサイズは2058×2058セルであるため周辺の5セル分が隣接するOTCAMPと重なり合う。また四隅のブロックの外側にあるタブは隣接するOTCAMPの領域内に配置され、後述する近接信管の起動に使用される。

B/S(誕生/生存)ルールの設定はOTCAMPの左下の部分で行い、任意の外部総和型ルールを設定することが可能である。設定部分にはグラフィカルな注釈が付けられており、それに従って簡単に設定することができる。B/Sそれぞれの側に9個ずつある欠けたイーター1の任意のものをONにする(生存セルを1つ加えて完全なイーター1にする)ことで設定は完了する。例えばライフゲームのルールであるB3/S23を設定する場合は、B側の3番のイーター1とS側の2番と3番のイーター1をONにすればよい。

隣接するOTCAMP同士の接続はOTCAMPを適切に並べるだけで自動的に行われる。OTCAMPは8方向にグライダー出力経路と近接信管(proximity fuse)を持つが、すべての出力経路は最初イーターによって閉じられている。しかし隣にOTCAMPが並べられるとその方向の近接信管が起動してイーターが除去され、必要な出力経路が開かれる。

近傍(neighborhood)の定義は任意の近接信管を無効化することで行うことができる。初期状態では8方向すべての近接信管が有効で、これは隣接する8個のセルと影響を与え合うムーア近傍(Moore neighborhood、ライフゲームも含まれる)が適用されていることを示す。特定の方向の近接信管を無効化するには、斜め方向(北東、南東、南西、北西)の場合は対応する角部分の近接信管内にある軽量級宇宙船を消去し、直交方向(東西南北)の場合は対応する辺の中程にあるイーター1に接する隣接OTCAMPのブロックを消去する。例えば斜め方向の近接信管をすべて無効化すれば東西南北からのみ影響を受けることになり、これはフォン・ノイマン近傍(Von Neumann neighborhood)を適用するということになる。

 
角部分の接続
角部分の接続
B/Sルール設定部
B/Sルール設定部分
角部分(北西)の近接信管
角部分(北西)の近接信管
(マゼンタは隣接OTCAMPのセル)
上図右端にある3個のブロックが北西へのグライダー出力経路を塞ぐイーター。北西側に隣接するOTCAMPがあるときはマゼンタの位置にタブが配置されて近接信管が起動し、中央にある3個のブロック(左にある軽量級宇宙船を食べるイーター)が破壊されて軽量級宇宙船が右端のイーターに到達、軽量級宇宙船によって右端の3個のブロックが破壊されて北西へのグライダー出力経路が開く。
辺部分(北)の近接信管
辺部分(北)の近接信管
(マゼンタは隣接OTCAMPのセル)
上図右下にあるイーター1が北へのグライダー出力経路を塞ぐイーター。北側に隣接するOTCAMPがあるときは右上マゼンタの位置にブロックが配置されて近接信管が起動し、右下のイーター1が除去されることで北へのグライダー出力経路が開く。