モジュール詳細:再

冗談は程々にしないと……。

モジュールには8つの暗号化された文字が表示される。また、暗号化された文字を含む8つの八角形のボタンもある。モジュールを解除するためには、5つの豆を正しい順番で特定の時間に押さなければいけない。

セクション1:ディスプレーの解読

ディスプレーはブーズル豆文字で暗号化されている。以下の表から対応する三十六進数の文字を見つける。左上の数字は、対応する列/段のセット番号を表している。

ブーズル豆文字参照表
1
2
3
4
5
S5ØJ8X
OWZ1HF
VMQ4EL
3DTC6U
GN2RAY
P9KIB7

得られたメッセージは、まだ暗号化されている。これは2ページにある単語のいずれかであるが、単語の長さが8になるまでランダムな英字が取り除かれ、その後ランダムにシフトされ、0から2までの値を取る3つの係数を含む乱数係数配列Cを用いて、回転三角形暗号で暗号化されている。係数の値はそれぞれC1, C2, C3である。

セクション1.1:回転三角形暗号

暗号三角形(2ページ)から暗号化する文字を探し、その位置を軸と呼ぶ。軸を6×6の三角形の中心を基準に、C1と同じ回数だけ時計回りに120度回転させる。6×6三角形を4つの3×3三角形に分割する。軸を3×3の三角形の中心を基準に、C2と同じ回数だけ時計回りに120度回転させる。6×6の三角形を9つの2×2の三角形に分割し、軸を2×2の三角形の中心を基準に、C3と同じ回数だけ時計回りに120度回転させる。新しい位置にある文字が暗号化された文字となる。

1 D 8 U S B K R C N 6 M A 9 V 4 Q X J T Z 5 L Y 2 7 O G I E W 3 H P Ø F

ディスプレーの復号が終わったら、暗号化された単語に対応する下の表の値を取る。この値はDと示される。

フレーズ
BEANBOOZLEDBEANEDAGAINBAMBOOZLINGTOOCOLOURFULBEANINGSHYPERBEANSULTRABEANSCOOLBEANS
1112131415161718
ROTTENBEANSJELLYBEANSLONGBEANSBEANBEANBEANNOTGOODBEANSAUCYBEANSBAKEDBEANSBEANOVERLOAD
2122232425262728
BEANCIPHERCANTBEATBEANSBURNEDBEANKILLERBEANINEDIBLESURELYNOTCORNBEANKRUPTSUPERMARKET
3132333435363738
GROCERIESROWANATKINSONMEANDTHEBOYSAT3AMLOOKINGFORBEANSDANSBEANSPOGBEANSBEANSANITY
4142434445464748

セクション2:豆の値の算出

ブーズル豆文字参照表を用いて、各豆から二つの三十六進数を取得する。上向きと下向きで別々の文字であると解釈する。十進数に変換し、二つを合計し36で割った余りをInとする。nは、読み順における豆の位置である。この配列はビーンファ--で使用する。値Dの下一桁と一致する位置から始める。処理を適用した後、常に36で割った余りにする。ビーンファ--のコマンドは、ディスプレーの色を上下段の読み順で読むことで得られる。その後ビーンファ--の表に対応する文字を参照する。段には、1-8の範囲に入るまで必要に応じて8を引いた、文字列内における色の位置を使用する。

セクション2.1:ビーンファ--

  • <, >:配列内を1つ左/右に移動する(ループ有)。
  • +, -:現在の位置の数字に対して1足す/引く。
  • [, ]:ループの開始/終了。ループ内のコードは2回実行する。
  • ,, .:現在位置の値を取得してメモリに格納する/現在位置に格納されている値を設定する(何もない場合は設定しない)。
  • , :左隣に小さい値/右隣に大きい値があれば、左/右に移動する(ループ有)。
  • , :配列中のこの値とその反対側の値が偶奇性が一致する/しない場合、現在の位置に1足す/引く。反対側とは、現在の項目から左/右に数えて4番目の項目である。
  • *:位置を記憶し、新しい位置が再び現れた瞬間に交換してメモリをリセットする。
  • , :Cを用いて、現在の値を暗号化/復号する。
ビーンファ--
OlBnLfYkAcLiGdPeYlBdBeMiLeWeWt
1<>+-[],.*
2>,-]+*.<[
3-*.<+>][,
4[>],*+<-.
5.+-*>[,<]
6]>[*.+-,<
7,>*<[].-+
8-+>*.<][,

より小さいループを優先してペアになっていないループ文字を削除する。配列内のn番目の値をその豆の値Bnと呼ぶ。

セクション2.2:合計の算出

ディスプレーのn番目の文字を取得し、上半分を段かつ下半分を列に使用して、セット番号を取得する。それらを上、下の順に連結する。 次に、n番目の豆から取りうる4つのセット番号の和を末尾に追加する。 これを(Bn + 1)で割った余りを求め、Snを取得する。

Snにすべての値Cを十進数として解釈して連結した数を乗算し、Bnを足して合計の値Tnを出す。

セクション3:豆の押し方の算出

T値が6番目に高い豆から、T値が2番目に高い豆までを、同率の場合は読み順に後ろにある方が高いとみなして順番に押す。

セクション3.1:最初の4つ

各豆に含まれる三つの色を取得し、ビーンファ--の表からその列番号を見つける。列番号は、左から右に、Bk = 0, Ol = 1, Bn = 2, ... とする。 豆全体の色に241を掛けてその他二色の積を足し、豆の色の値Vnを取得する。

以下の条件に当てはまるときに、その豆を押す。DigitalRoot(N)は、Nの数字根を表し、演算子「%」は右辺で割った余りを表している。

DigitalRoot([爆弾の残り秒数] % (Sn + D)) = DigitalRoot(Vn)

セクション3.2:最後に押す豆

値Dの上一桁と同じステージで押した豆を見る。それが時計回りに回っていれば、R = 1である。そうでなければ、R=0である。

以下の条件に当てはまるときに、その豆を押す。

[爆弾の残り秒数] % 2 = R

モジュールが解除されたら、すべての豆を食べてもよい。当然の結果である。

付録:豆の色