モジュール詳細:ボロノイ迷路

どこを行ったり来たりしているんだろう?

モジュールに表示されたマス(部屋)は迷路を構成している。どの線が壁なのかを推理する必要がある(その線を横切るとミスが記録されるため)。初期状態では、部屋にカーソルを合わせると隣接している部屋が示される。

まず、シリアルナンバーを三十六進数の数字として解釈する。これが初期値である。

壁を解読するには、反復処理が必要である。それぞれの反復において、数字 n が関係する。以下の計算を実行する:

  • その数値(最初は初期値)を n割った時の余りを求め、値を得る。
  • その数値を n割り (小数点以下は切り捨てる)、次の反復で使用する数値を得る。

最初の反復処理を実行し、開始部屋を特定する。ここで、n はモジュールの端と密接している部屋の数である。これらの部屋は左下隅の部屋から反時計回りに0から番号付けされている。

次に、この部屋を囲む線(モジュールの端に密接している線を除く)のリストを作成し、部屋がモジュールの端に接している場所から、0から順番に反時計回りに番号を振る。モジュールの複数の端に接している場合、下より右、右より上、上より左の端が優先される。

その後のそれぞれの反復において、 n はリスト内の線の数である。反復処理1回につき、部屋を区切る線が一本選ばれる。これにより、新しい部屋が事実上「発見」される。リストを次のように修正する。

  • 新しい部屋を囲むすべての線を、先ほど区切った線から反時計回りの順に追加する。
  • すでに発見されている2つの部屋の間の線をすべて取り除く。

すべての部屋が発見されるまで、この処理を続ける。反復処理によって選択された線はすべて通過可能であり、残りは壁である。

モジュールの解除を開始するには、モジュールをタップする。鍵は表示されなくなる。隣の部屋に移動するには、移動したい部屋をタップする。迷路内を移動し、壁を越えずに順番に(赤、黄、青)鍵を集める。

ステップ 1:三十六進数表記のシリアルナンバーを変換する。

今回のシリアルナンバーは、E62CW2とする。

結果は856714178となる。

27301645

ステップ2:モジュールの端と密接している部屋の数は8である。

856714178 % 8 = 2(%は剰余記号)となるから、開始部屋は2番。

856714178 ÷ 8 = 107089272 (次のステップで使う数字)。

120

ステップ3:部屋を囲む線の数を数える。

107089272 % 3 = 0となるから、0番目の線は通過できる。

107089272 ÷ 3 = 35696424 (次のステップで使う数字)。

453012

ステップ4:新しい部屋を囲む線の数を数える。

35696424 % 6 = 0となるから、0番目の線は通過できる。

35696424 ÷ 6 = 5949404 (次のステップで使う数字)。

543201

ステップ5: 新しい線を足す。元々の線5は壁となる。

5949404 % 6 = 2となるから、2番目の線は通過できる。

5949404 ÷ 6 = 991567 (次のステップで使う数字)

さらに7回繰り返し、最終的な迷路はこのようになる。