謎解き 文字位置の置換|対応表の行列と置換方向を確定する

謎解き 文字位置の置換は、文字の位置を対応表の行と列へ結び、指定先の文字へ移す方法です。表を読む前に入力側・出力側・行列の順序・置換方向を見出しとして固定します。文字そのものを替える処理と並びだけを替える処理を分け、途中結果を別欄へ残します。出力から逆表を使って元の位置へ戻り、全要素が往復できれば検算を終えます。
文字位置を置換する表の範囲を決める
「ID350の「謎解き 暗号」が担う全体説明は繰り返さず、謎解き 文字位置の置換で対応表の行列と置換方向を確定する判断だけを扱う。固有作品の内容、変動する開催情報、順位付け、根拠のない断定は対象外とする。」
本記事は位置対応表による置換に絞り、暗号全般の方式や解読方法は扱いません。表の一マスが一文字か複数文字かを確認し、見た目の字数だけで単位を決めません。固有作品の暗号文や答えを示さず、中立な記号列と空の対応表で説明します。対応方向が示されない場合は上から下と下から上を別案にし、片方を推測で採りません。
行・列・変換方向を先に固定する
最初に原文を位置番号付きで写し、空白・区切り・記号を要素として残します。対応表には行見出しと列見出しを明記し、入力位置が交わるマスを一つ選びます。選んだマスから出力側の見出しへたどり、変換前後を同じ行へ記録します。全文を処理した後で逆方向の表を作り、原文の位置列を復元します。
- ✓謎解き 文字位置の置換の対象範囲
- ✓謎解き 文字位置の置換の準備条件
- ✓謎解き 文字位置の置換の実施順
- ✓謎解き 文字位置の置換の例外対応
- ✓謎解き 文字位置の置換の完了記録
標準資料を文字単位の確認に使う
NIST・Cryptographic Standards and Guidelinesは、標準化された暗号処理と単純な置換を区別する参照先です。RFC Editor・RFC 4648 Base Encodingsは、固定された符号表と入力単位の例を確認する資料です。RFC Editor・RFC 3986 URI Generic Syntaxは、文字と区切り記号の役割を分ける仕様です。Unicode Consortium・The Unicode Standardは、画面上の文字と符号位置を確認する基準です。
- NIST・Cryptographic Standards and Guidelines
- RFC Editor・RFC 4648 Base Encodings
- RFC Editor・RFC 3986 URI Generic Syntax
- Unicode Consortium・The Unicode Standard
NISTの暗号資料は、問題内の対応表や変換方向を決める解答集ではありません。RFC 4648の符号表を、独自に示された置換表へそのまま当てはめません。RFC 3986で特別な役割を持つ記号も、設問内では別の要素になり得ます。Unicodeの符号位置と、謎で数える見た目の文字位置は一致しない場合があります。
置換・符号化・順序変換を比べる
置換として読む方法は、各入力要素を対応表の別要素へ一対一で移します。符号化として読む方法は、入力を定めた単位へ分けて符号表の値へ直します。順序変換として読む方法は、要素自体を保ったまま位置の並びだけを変えます。
| 選択肢 | 確認項目 | 次に照合する項目 |
|---|---|---|
| 置換として読む | 謎解き 文字位置の置換の対象範囲 | 謎解き 文字位置の置換の準備条件 |
| 符号化として読む | 謎解き 文字位置の置換の実施順 | 謎解き 文字位置の置換の例外対応 |
| 順序変換として読む | 謎解き 文字位置の置換の完了記録 | 謎解き 文字位置の置換について、対応表の行列と置換方向を確定するための実務判断だけに限定する |
出力に別の文字が現れるなら置換表の入力側と出力側を先に確認します。桁や固定長のまとまりが示される場合は符号化案を別工程で試します。同じ文字が全て残る場合は順序変換を疑い、使用回数を照合します。三方式の途中結果を混ぜず、元へ戻せる一連の処理だけを候補に残します。
対応を逆に読む三場面を直す
変換表には原位置・入力要素・行見出し・列見出し・出力要素・逆変換を設けます。置換担当と逆変換担当を分け、逆側は原文を見ずに復元します。完了条件は全入力を一度ずつ処理し、逆表から元の位置列へ戻ることです。
入力側と出力側を逆に読む場面
表の矢印が小さい場合も、見出しに入力と出力を書いてから一行を変換します。同じ行を逆向きにもたどり、元の文字へ戻るかを試します。往復できない要素があれば、方向か重複対応の扱いを見直します。
行と列の順序を取り違える場面
位置対の一番目が行か列かを、凡例と表の見出しから確認します。読み順を入れ替えた候補は同じ欄へ上書きせず、別の対応表にします。一つの既知対応があるなら両案へ適用し、整合しない方を除きます。
一マスに複数の文字がある場面
文字列が一つの要素か個別文字の集合かを、区切りと他のマスから比べます。まとまりで置換する場合は途中で分割せず、位置番号も一単位に付けます。個別処理が必要なら同じマス内の順序を保ち、出力欄へ一文字ずつ残します。
往復できる対応表を完成させる
復元できない場合は要素の単位、行列順、変換方向、転記を順に確認します。一つの出力へ複数入力が集まる表は、逆変換だけで確定できないと注記します。空白や区切りを除外した場合は、その根拠と元位置を別欄へ残します。完了記録には表の版と入力範囲、処理順、復元できなかった要素をまとめます。
対応表は左から右へ読むものですか?
向きは表の矢印や見出しで確認し、紙面の配置だけでは決めません。指示がなければ両方向の結果を作り、逆変換の成立も比較します。意味が通る方という理由だけで、方向を後付けしないようにします。
空白も位置として数えますか?
数える単位の指示を確認し、空白を含む案と除く案を分けます。除外しても元の位置番号は残し、後続文字を詰めたことを記録します。区切り自体が入力要素なら、対応表の対象として一行を与えます。
同じ文字は同じ出力になりますか?
文字だけでなく位置を使う置換では、同じ文字でも出力が異なり得ます。入力欄へ文字と位置番号を組で書き、対応条件を明確にします。文字だけを鍵にする表なら、同じ入力の出力一致を検算します。
文字位置の置換では入力側・出力側・行列順・処理単位を先に固定します。置換と符号化と並べ替えを別工程にし、途中結果を一つへ混ぜません。空白や複数文字の扱いも位置表へ残せば、欠落とずれを追えます。逆表で元の位置列へ戻る確認が、対応表を採用する最終条件です。
