モジュール詳細:ゴースト

レトロなボス戦を丁寧に処理できるようにならないといけないって言っただろ?今、あいつらは僕の目の前に…あ、このスライムはちょっぴりカワイイなぁ。(^^)

このモジュールは、ゲーム「BRICKDOWN ブロックくずしのフランス革命やぁ~!」の、ワールド3のボス戦がテーマになっている。このモジュールには、緑のスライムが浮いている。

処理担当者は、3つの段階にわたってボスを倒さなければならない。最初は1匹のスライムしかいないが、攻撃が成功するとスライムは4匹に分裂する。そして、その4匹のスライムへの攻撃が成功すると、それぞれのスライムがさらに4匹のスライムに分裂し、合計16匹のスライムになる。この16匹のスライムをすべて倒すと、モジュールは解除される。

警告! スライムに攻撃すると同時に、スライムからトゲ鉄球が飛び出し、モジュール下部の3つのLEDのうち1つに向かって攻撃する。攻撃されているLEDには照準が表示される。緑色で点灯しているLEDは、現在の自分の位置を表す。攻撃を避けるには、他のLEDのどれかを押して、緑のLEDを照準から遠ざける。

トゲ鉄球はランダムなタイミングで飛び出すが、モジュールの段階が進むごとに頻繁に飛び出す。

スライムに最初の攻撃を行う前である場合かつ、爆弾のいずれかのモジュールが解除される前である場合、トゲ鉄球は飛び出して来ない。

第一段階: 大きいスライム1匹

カウントダウンタイマー上の異なるタイミングでスライムに4回攻撃(スライムを押すこと)しなければならない。これらの押すべきタイミングは次のとおりである:

  • カウントダウンタイマーの秒数の数字がともに偶数であり、2つの数字が異なる時。
  • カウントダウンタイマーの秒数の数字がともに奇数であり、2つの数字が異なる時。
  • カウントダウンタイマーの秒数の数字が両方同じ時。
  • 任意のタイミング。

これらの押すタイミングはどの順番で実行しても構わないが、それぞれのルールに従うのは一度だけであり、間違ったタイミングで攻撃した場合、ミスが記録される。ミスが記録された場合、今までの入力はリセットされ、再びスライムに4回攻撃する必要がある。

なお、爆弾の残り時間が60秒を切った場合、これらのルールを無視して、いつでも自由にスライムに攻撃することができる。

大きいスライムに4回連続で攻撃することに成功すると、4匹に分裂する。これは、第一段階が終了し、第二段階が開始することを示す。

第二段階: スライム4匹

まず、シリアルナンバーの全ての文字を取り、英字をアルファベットの位置に変換し、4つの値を作成する:

  • 1番目の値は、1番目の文字と2番目の文字の積である。
  • 2番目の値は、3番目の文字と4番目の文字の積である。
  • 3番目の値は、5番目の文字と6番目の文字の積である。
  • 4番目の値は、シリアルナンバーに含まれるすべての文字の合計である。

そして、それぞれの数値に反復処理を行い、4つの4文字のコードを得る。

それぞれの値をY とする。各反復処理において、数N と文字列S が関連する。N は常にS の長さになる。 S は必ず「ABCD」でスタートする。反復処理を行うにはこれらの計算を実行する。

  • YN割った余りを求める。これを、値V とする。
  • S からV 番目の文字X (左から順番に0から始まる番号が振られている)を取る。
  • これを現在のコードの後ろに追加する。
  • YN で割り、小数点を切り捨てる。
  • S からX を削除する。

この作業を繰り返し、シリアルナンバーの文字から計算されるそれぞれの値から1つずつ、4つの4文字のコードが揃うまで続ける。

これらのコードを第三段階でも覚えておく。

4匹のスライムにはそれぞれA~Dの文字が読み順で割り当てられている。4つのコードの順番で、それぞれのスライムに攻撃する。スライムを4回ずつ、合計16回攻撃する必要がある。どのタイミングでも、間違ったスライムに攻撃するとミスが記録され、入力がリセットされる。

16回攻撃に成功すると、4匹のスライムがそれぞれ4匹に分裂し、合計16匹に分裂する。これは、第二段階が終了し、第三段階が開始することを示す。

第三段階: 小さいスライム16匹

まず、それぞれのコードの1文字目を順番に取り、そのコード番号と順番に関連付ける。次に、それぞれのコードの2文字目を順番に取り、再びそのコード番号と順番に関連付ける。これを4つのコードの4文字すべてに繰り返す。以下の例を参考に行うこと。

A、B、C、Dは左から右への列、1、2、3、4は上から下への段を表す。16個の文字と数字のペアを取得し、これらのスライムに攻撃する。

16匹のスライムを正しい順番で攻撃すると、モジュールは解除される。

どのタイミングでも、間違ったスライムに攻撃すると、ミスが記録される。

例:

この例では、ABCD、DCAB、ADBC、CBDAというコードを使用する。

  • それぞれのコードの一文字目を順番に取る:A、D、A、C
  • それぞれのコードに、番号を順番に関連付ける:1、2、3、4
  • 最初の4組は、A1、D2、A3、C4となる。
  • それぞれのコードの二文字目を順番に取る:B、C、D、B
  • それぞれのコードに、番号を順番に関連付ける:1、2、3、4
  • 次の4組は、B1、C2、D3、B4となる。
  • それぞれのコードの三文字目を順番に取る:C、A、B、D
  • それぞれのコードに、番号を順番に関連付ける:1、2、3、4
  • 次の4組は、C1、A2、B3、D4となる。
  • それぞれのコードの四文字目を順番に取る:D、B、C、A
  • それぞれのコードに、番号を順番に関連付ける:1、2、3、4
  • 最後の4組は、D1、B2、C3、A4となる。