モジュール詳細:二進数暗号

「!bomb time」これはどう使うんだ?

このモジュールは、3つのディスプレー、キーボード、2つの小さな正方形ボタン、及び現在のページ数を表示するディスプレーで構成されている。

右の正方形を押すと次のページに、左の正方形を押すと前のページに戻る。ページは2ページある。

最初のページの上のディスプレーには、16桁の二進数が表示される。

最初のページの下のディスプレーにはキーワードが表示される。

2番目のページの上のディスプレーには1文字の英字が表示される。

2番目のページの中央のディスプレーには別の16桁の二進数が表示される。

以下の手順に従い、提出する英字を決定する。

ステップ1:軸対称転置

この手順では、5つの4×4グリッドを作成する

グリッド1:

バッテリーの数を8で割った余りを求め、1を加算する。1・2段目に1から8までの数字を配置する必要があるが、計算した値を最初に配置し読み順に数字を続ける。

ポートの数を8で割った余りを求め、1を加算する。3・4段目に1から8までの数字を配置する必要があるが、計算した値を最初に配置し読み順に数字を続ける。

グリッド2:

2ページ目の中央のディスプレーに表示されている16桁の二進数を使用して4×4グリッドを作成する。

グリッド3:

グリッド1の各セルを読み順に取り、次にグリッド2からその位置と水平方向に反対(A1→D1)にあるセルの数字を取る。二つが両方とも奇数であるか両方とも偶数である場合は1を配置し、それ以外の場合は0を配置する。

グリッド4:

1ページ目の上のディスプレーに表示されている16桁の二進数を使用して4×4グリッドを作成する。

グリッド5:

グリッド3の各セルを読み順に取り、次にグリッド4からその位置と水平方向に反対(A1→D1)にあるセルの数字を取る。二つが両方とも奇数であるか両方とも偶数である場合は1を配置し、それ以外の場合は0を配置する。

例:

バッテリーの数: 2
ポートの数: 5
ページ1の上のディスプレー: 1100110100001001
ページ2の中央のディスプレー: 0001101010011001

3456
7812
6781
2345
0001
1010
1001
1001
1101
0000
0011
0011
1100
1101
0000
1001
0001
0100
1100
0101

ステップ2:アルファベット転置

まず、最初のページの下のディスプレーからキーワードを取得する。次に、アルファベット全てをキーワードの先頭に配置し、重複する文字の2文字目以降を削除する。最後に、文字列から2ページ目の上のディスプレーに表示されている英字を削除すると25文字の文字列が作成できる。文字列の最初の16文字を4×4のグリッドにする。

次に、26文字から削除された英字の表を使用して4×4グリッドを取得する(常にA/B/Cのいずれかになる)。

表A
XX--
----
--X-
X-XX
表B
X---
X---
X---
XXX-
表C
X--X
-X--
--X-
X--X

英字の4×4グリッドについて、読み順に6番目の位置にある英字を下の表から見つけ、右の指示に基づいて表の全てのxを上/下にシフト(折り返し有)させる。

A B C D E F G H I J K L Z xを1段下に移動
N O P Q R S T U V W X Y M xを1段上に移動

最後に、xマークがある位置を読み順で取り、グリッド5のその位置にある数字を取得する。これにより、「取得済二進数」と呼ばれる6桁の二進数が作成される。

例:

ページ2の上のディスプレー: B
キーワード: SCRAWL
キー: DEFGHIJKMNOPQTUVXYZSCRAWL

DEFG
HIJK
MNOP
QTUV
0001
0100
1100
0101

位置6はIなので、xを1段下にシフトさせる。

表B
シフト前
X---
X---
X---
XXX-
表B
シフト後
XXX-
X---
X---
X---

取得済二進数: 000010

ステップ3:ASCII変換

6桁の二進数のうち1つを削除する必要がある。バッテリーの数を6で割った余りを求め、1を加算する。文字列内のその位置にある数字を削除する。新しく作成された5桁の二進数を以下の表で見つけ、その二進数に対応する英字を取得する。

A00001H01000O01111V10110
B00010I01001P10000W10111
C00011J01010Q10001X11000
D00100K01011R10010Y11001
E00101L01100S10011Z11010
F00110M01101T10100
G00111N01110U10101

例:

取得済二進数: 000010
バッテリーの数: 2
取得済二進数から3番目の位置の数字を削除: 00010
回答: B

最後に、その英字を押してモジュールを解除だ!