モジュール詳細:不正虹色矢印

「反転貯留ポイントの計算にポイントする」ってどういうこと!?ブラックホールや無駄なツービッツをポイントしているんだけど!

このモジュールには、虹色がランダムに配置された8つの矢印ボタンと、中央には00から77までの八進数を表示するディスプレーがある。モジュールが表示可能である色は、赤(Red)、オレンジ(Orange)、黄(Yellow)、緑(Green)、青(Blue)、紫(Purple)、白(White)、黒(Black)の8色である。未送信時には6セットの矢印のシーケンスが点滅し、その後に文字が別の色に点滅して、矢印の点滅シーケンスの終わりを示す。

黒い矢印がない場合、そのモジュールは「虹色矢印(Rainbow Arrows)」の可能性がある。

モジュールを解除するには、処理担当者が2色のクエリを行い、モジュールに表示される応答を読み取る必要がある。表示される応答は、モジュール上では 「R:##」として八進数で表示される。各応答に対して、次の色のシーケンスをクエリする手順を実行する。処理担当者が3回目のクエリを行った後、そのクエリの応答に基づいて送信する値を決定する。

モジュールのクエリを行うには、2つの矢印の色を押し、次にディスプレーを押して応答を受け取る。モジュールの送信を行うには、矢印が押されていない状態でディスプレーを押し、2つの矢印の色を順番に押し、再びディスプレーを押す。処理担当者が送信をやめたい場合、矢印が入力されていない状態でディスプレーを押す。1色だけ選択してクエリ・送信することや、モジュールがクエリを処理している間に操作することは、絶対にしてはならない。これを行うとミスが記録され、初期状態に戻るまでの数秒間、モジュールにエラーメッセージを表示する。

このマニュアルの目次

1回目のクエリ

1回目のクエリを得るには、シリアルナンバーから3つの値のペアを作成する。1番目と2番目、3番目と4番目、5番目と6番目をペアとし、英字をA1Z26で数字に変換する。それぞれのペアの和をとり、それらすべての数を8で割った余りを求め、3つの別々の値を得る。この3つの値をそれぞれZ、Y、Xと呼ぶ。

以下の表からZを表す段を見つけ、八進数の値0~7を順に表す一連の色の配置を得る。この段は後のクエリに使用される。

爆弾のバッテリーの数が偶数である場合、Yを表す色がクエリするペアの最初の色となり、Xを表す色が2番目の色となる。

そうでない場合、Xを表す色がクエリするペアの最初の色となり、Yを表す色が2番目の色となる。

表のそれぞれのセルでは、青との混同を避けるために黒を「K」で表していること以外は、各文字が色の英語名の最初の文字で表されている。

Z 色で表される八進数
01234567
0RKYWOGPB
1YOBGRKWP
2BYKRWPGO
3GRPOKWBY
4PBGKYROW
5KWOBPYRG
6WGRPBOYK
7OPWYGBKR

2回目のクエリ

点滅する矢印のシーケンスを6桁の二進数の文字列に変換する。二進数の最初の桁は、ディスプレーの文字が点滅した後に点滅する最初の矢印のセットで表す。白と黒は決して、矢印のシーケンスで点滅することはないため、点滅セットが反転しているかどうかを判断する際、考慮してはいけない。1つの色付き矢印を除くすべての矢印が点滅している場合、その桁は1として表され、そうでない場合、0として表される。

以下の表を使用して、最初のクエリからの応答を八進数から二進数に変換する。これを別の二進数の文字列として作成する。

八進数二進数八進数二進数八進数二進数八進数二進数八進数二進数八進数二進数八進数二進数八進数二進数
00001001201030114100510161107111

先ほど得られた2つの二進数の文字列に対してXOR演算を行い、新しい一つの二進数を得る。その二進数から2桁目、4桁目、6桁目を取り出し、3桁の二進数を1つ作り、余ったものを使用して、2つ目の3桁の二進数を作る。この2つの3桁の二進数を八進数に変換し、2つの八進数を1つの八進数の値に結合し、以下の表を相互参照して新しい八進数の値を得る。1回目のクエリで使用した色の配置を再び参照して、新しい八進数の値をクエリする。

_0_1_2_3_4_5_6_7
0_3602707457322422
1_4030061764345147
2_6353455410616041
3_6707004204564665
4_1662772631126625
5_5552111427053576
6_1550372344334373
7_7572032120137101

3回目のクエリ

2回目のクエリで得られた応答を使用し、以下のグリッドに基づき、読み順でその位置にある座標から開始する。00はグリッドの最も左上である。グリッド上で、モジュールにある白の矢印と同じ方向を向いて開始する。以下の疑似コード取得手順を実行する。

  1. I = 0Pを「空のリスト」、Mを白い矢印からディスプレーの文字が点滅したときの色と一致する矢印まで時計回りに数えたときの矢印の数とする。(例:時計回りの順番で、色の並びがW、G、B、R、K、Y、O、Pのとき、点滅する文字の色が青の場合、Mは2となる。)
  2. I < 4である間、以下のステップを繰り返す。
    1. Eを別の「空のリスト」とし、ここではA = 0とする。
    2. A < I + 1である間、以下のステップを繰り返す。
      1. 今いる値をEに追加する。
      2. 現在の方向に1つ移動し、枠外に移動する場合はグリッドの反対側にループする。
      3. Aに1を加算する。
    3. Eのすべての値を合計し、それを8で割った余りを求め、この値をPに追加する。
    4. M回だけ時計回りに45°回転する。
    5. Iに1を加算する。
  3. P[0]を取り出し、P[1]と共に二進数に変換してからXOR演算を行い、八進数のAを作成する。ここで、P[0]はリストPの最初の値のことである。同様に、P[2]P[3]っでXOR演算を行い、八進数のBを作る。
  4. 2回目のクエリの表からABの2つの数字を順に結合させ、1つの八進数にした値に対応するセルを見つけ、1回目のクエリの段から該当する色のペアをクエリする。
01735426
13047652
34160275
46321507
62453710
25674031
57206143
70512364

回答の送信

回答を送信するには、初期状態でディスプレーに表示された値、この時点までのクエリからのすべての応答、6セットの点滅する矢印のシーケンスを使用する。爆弾に存在するポートを調べ、最も多く出現するポートの種類のリストを作成する。このリストに、この表に記載されているポートの種類が4つ以上ある場合、1番目、3番目、5番目の点滅を省略する。そうでない場合、この表のリストにあるポートの種類に対応する点滅を省略する。

ポートの種類パラレルシリアルPS/2RJ-45ステレオRCADVI-D
省略する位置2番目6番目3番目4番目5番目1番目
色の点滅 方程式
R(x) = x + A0
オレンジ O(x) + A1 = x
Y(x) + (2n - 1) = A2 - x
G(x) + x = 2 * x + ∑A / 3
x - 2 * B(x) - 2 * n = min(A) - B(x)
3 * P(x) - 2 * x = max(A) - x + 4 * P(x)

残りの点滅セットを調べ、点滅した色からそれぞれの方程式を見つける。点滅が反転している場合、xを解く。そうでない場合、F(x)を解く。方程式を解くには、もう一方の変数(F(x)を解く場合はx、xを解く場合はF(x)。その他の値を代入した後に行うこと)に、点滅セットの計算で求められた値、またはこれが最初のセットである場合はディスプレーに表示された値を代入する。点滅セットを一度計算するごとに、十進数での計算値が0~63の範囲内から外れる場合、64を足すか引くことを繰り返し、計算値を0~63の範囲内にする。また、割り算をするとき、小数点を省略すること。つまり、24.5555は24になる。25ではない。
右の表の方程式について、

  • Aは、ここまでに得られた応答のリストである。
  • Anは、(n + 1)番目のクエリの応答である。
  • nは、式が使用されるときに残っている点滅セットにおける現在の位置で、最初の点滅セットは0である。
  • min(A) はリストAの最小値である。
  • max(A) はリストAの最大値である。
  • ∑A はリストAのすべての値の合計である。

最終的に求めた点滅セットの結果を八進数に変換し、2回目のクエリの表を参照して、新しい値を得る。新しい値から該当する色のペアを1回目のクエリの表から見つけ、回答を送信する。