モジュール詳細:四元数

“四元数は、ハミルトンの功績により生まれたものであり、美しく独創的ではあったが、クラーク・マクスウェル.”
—ウィリアム・トムソン、ロード・ケルビンを含め、それらに触れた人々にとっては混じりけのない悪であった。

このモジュールを解除するには、以下の説明に従って2つのクォータニオンの積を計算し、結果の正しい成分をキーパッドに入力する。

ステップ1:四元数の演算

  • キーパッドの10個の数字キーには、赤、緑、青、黄、白の5色がある。各色は、「SUBMIT」と「CLR」/「NEG」ボタンを除いて、2つずつある。
  • モジュールの右側には、数式「 i2 = j2 = k2 = ijk = -1」がある。この式は、どの色にどの四元数の成分が割り当てられているかを示している(白にはどれも割り当てられてない)。
  • 2つの四元数q1とq2を以下の手順で作成する。
    • 白以外の8つのキーの値を、2つの四元数の成分に代入する。0は10として扱う。 各成分ごとに、q1は大きい方の値を受け取る。ただし、その色が表Aの例外条件に当てはまる場合は、例外としてq2が大きい方の値を受け取る。
    • シリアルナンバー(ここでも0を10として扱う)内のいずれかの数字が、いずれかの四元数の成分である場合、その四元数の対応する成分に-1を掛ける(シリアルナンバーの中に同じ数字が複数回現れる場合でも、1回だけ行う)。
    • 点灯したインジケーターが無い場合、q1を自身の共役四元数に置き換える。
    • 点灯していないインジケーターが無い場合、q2を自身の共役四元数に置き換える。
  • バッテリーの個数が奇数の場合、2つの積q1q2を求める。そうでなければ、q2q1を求める。この積は、ステップ2で使用する。

表A:例外条件

例外条件
この色は、iまたはj成分に属する。
爆弾に、少なくとも1つのPS/2ポートがある。
爆弾のシリアルナンバーに、単語「BLUE」内にある、いずれかの英字が含まれている。
2つの白いキーの和(ここでも0を10として扱う)は、素数である。

ステップ2:回答の送信

  • 「SUBMIT」ボタンの色に注目する。これは、モジュールを解除するために、ステップ1で求めた積で入力しなければならない成分を示している。ただし、ボタンが白の場合は、代わりにその数のノルムの2乗を入力する。
  • キーパッドを使って数字を入力し、SUBMITを押して送信する。
  • CLR/NEGを押すと表示が消える。このボタンの色は関係ない。
  • 負の値を入力するには、ディスプレーが空欄のときにCLR/NEGを押して負の符号を入力してから残りの数値を入力する。
  • 答えの先頭にゼロをつけてはいけない。ゼロを入力する際は0と入力し、-0としてはいけない。

付録:四元数のざっくりとした説明

四元数とは、複素数を拡張したものである。通常、「 a + bi + cj + dk」の形式で示される。a, b, c, d は実数、i, j, kは虚数単位(-1の平方根)である。

四元数は、次のように成分ごとに足し合わせることができる。

(a1 + b1i + c1j + d1k) + (a2 + b2i + c2j + d2k) = (a1 + a2) + (b1 + b2)i + (c1 + c2)j + (d1 + d2)k

また、四元数はスカラー値の乗算も可能である。任意の実数mに対し、以下の式が成り立つ。

m(a + bi + cj + dk) = ma + (mb)i + (mc)j + (md)k

四元数同士の乗算は交換法則が成り立たないため、少し変わっている。つまり、q1q2は、必ずしもq2q1と等しくなるとは限らない。基本的な四元数の乗算は、以下のように行われる。

i2 = j2 = k2 = -1  ij = k  jk = i  ki = j  ji = -k  kj = -i  ik = -j

2つの四元数同士の積(a1 + b1i + c1j + d1k)(a2 + b2i + c2j + d2k)は、分配法則を用いてこの式を展開し、各項を掛け合わせ、同類項でまとめることで求められる。具体的に、積は次のようになる。

(a1a2 - b1b2 - c1c2 - d1d2)
+ (a1b2 + b1a2 + c1d2 - d1c2)i
+ (a1c2 - b1d2 + c1a2 + d1b2)j
+ (a1d2 + b1c2 - c1b2 + d1a2)k

ある四元数q = a + bi + cj + dkの共役は、- bi - cj - dkになり、q*と表される。

ある四元数q = a + bi + cj + dkのノルムは、sqrt(a2 + b2 + c2 + d2)になり、|q|と表される。sqrt(n)はnに対し正の平方根を返す関数である。ノルムは、q1, q2に対して、|q1|·|q2| = |q1q2|を満たす。