モジュール詳細:ボロノイ迷路
どこを行ったり来たりしているんだろう?
モジュールに表示されたマス(部屋)は迷路を構成している。どの線が壁なのかを推理する必要がある(その線を横切るとミスが記録されるため)。初期状態では、部屋にカーソルを合わせると隣接している部屋が示される。
まず、シリアルナンバーを三十六進数の数字として解釈する。これが初期値である。
壁を解読するには、反復処理が必要である。それぞれの反復において、数字 n が関係する。以下の計算を実行する:
- その数値(最初は初期値)を n で割った時の余りを求め、値を得る。
- その数値を n で割り (小数点以下は切り捨てる)、次の反復で使用する数値を得る。
最初の反復処理を実行し、開始部屋を特定する。ここで、n はモジュールの端と密接している部屋の数である。これらの部屋は左下隅の部屋から反時計回りに0から番号付けされている。
次に、この部屋を囲む線(モジュールの端に密接している線を除く)のリストを作成し、部屋がモジュールの端に接している場所から、0から順番に反時計回りに番号を振る。モジュールの複数の端に接している場合、下より右、右より上、上より左の端が優先される。
その後のそれぞれの反復において、 n はリスト内の線の数である。反復処理1回につき、部屋を区切る線が一本選ばれる。これにより、新しい部屋が事実上「発見」される。リストを次のように修正する。
- 新しい部屋を囲むすべての線を、先ほど区切った線から反時計回りの順に追加する。
- すでに発見されている2つの部屋の間の線をすべて取り除く。
すべての部屋が発見されるまで、この処理を続ける。反復処理によって選択された線はすべて通過可能であり、残りは壁である。
モジュールの解除を開始するには、モジュールをタップする。鍵は表示されなくなる。隣の部屋に移動するには、移動したい部屋をタップする。迷路内を移動し、壁を越えずに順番に(赤、黄、青)鍵を集める。