謎解き 基数変換|位取りと使える数字の範囲を確認する

謎解き 基数変換は、各桁へ基数の累乗を割り当てて値を求め、別の位取り表記へ直す方法です。入力基数と出力基数を明記し、各表記で使える数字が基数未満かを先に確認します。文字で表す桁がある場合は数値との対応表を作り、語としての読みと分けます。変換後の表記を入力基数へ戻し、元の桁列と値が一致すれば完了です。
基数と使用できる数字を先に定める
「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のBaseという名称は、通常の位取り記数法と同じ計算を意味しません。RFC 3986で許される英数字も、基数変換の桁として使えるとは限りません。Unicodeで数字に分類される文字を、設問の桁値へ無条件に変換しません。
置換・符号化・順序変換を区別する
置換として読む方法は、桁記号を対応表の別記号へ一つずつ移します。符号化として読む方法は、データ単位を定めた文字集合へ表現し直します。順序変換として読む方法は、桁の値を保ったまま並びだけを変更します。
| 選択肢 | 確認項目 | 次に照合する項目 |
|---|---|---|
| 置換として読む | 謎解き 基数変換の対象範囲 | 謎解き 基数変換の準備条件 |
| 符号化として読む | 謎解き 基数変換の実施順 | 謎解き 基数変換の例外対応 |
| 順序変換として読む | 謎解き 基数変換の完了記録 | 謎解き 基数変換について、位取りと使える数字の範囲を確認するための実務判断だけに限定する |
位の重みを使わず一対一で変わるなら、基数変換より置換の可能性を見ます。Baseという語があっても符号化仕様か位取りかを、計算規則から判別します。桁順の反転が先に必要なら新しい列を作り、その後で基数を適用します。工程ごとの入出力を残し、最終表記が読めるという理由で方式を混ぜません。
基数が混ざる三つの場面を直す
基数表には原表記・入力基数・桁値・位の重み・中間値・出力表記を設けます。位取りを計算する担当と逆変換する担当を分け、途中値だけを共有します。完了条件は使用数字が各基数の範囲内で、往復後の値が変わらないことです。
基数以上の数字が含まれる場面
ある桁の値が基数以上なら、その基数の通常表記としては成立しません。誤記・区切り・別の基数・数字以外の記号という候補を分けて調べます。値を都合よく繰り上げず、原表記の不整合として表へ残します。
桁ごとに基数が違う場面
混合した位取りが明示される場合は、各位の重みを一つの基数の累乗にしません。桁位置ごとの上限と繰上り条件を別表へ書き、通常の基数変換と分けます。規則が不足するなら一つの値へ確定せず、分かる位だけを記録します。
英字を桁として使う場面
英字が数字の続きとして定義されているかを、凡例や既知対応から確認します。文字の順番だけで桁値を決めず、対応表を変換記録へ添えます。大文字と小文字の区別が示される場合は、同じ値へまとめません。
元の表記へ戻して変換を検算する
不一致なら桁記号の値、位番号、入力基数、出力基数の順に点検します。先頭ゼロや基数を示す添字は原表記欄へ保存し、数値だけへ縮めません。複数の入力列を扱う場合は基数ごとに表を分け、途中値でのみ比較します。完了記録には両基数と桁対応、計算方法、往復で保たれた値を残します。
数字だけ見て基数を推測できますか?
使われる最大の桁から下限候補は考えられますが、一つには決まりません。基数を示す添字や凡例、既知の値との対応を追加で探します。候補ごとの変換値を別表へ置き、意味だけで選ばないようにします。
途中で十進数を使う必要がありますか?
共通の中間値として使うと計算を整理できますが、別の方法もあり得ます。どの方法でも入力と出力の基数を明記し、位取りの対応を残します。逆変換で元へ戻ることを確認できれば、途中方式を検算できます。
先頭ゼロは消してもよいですか?
数値が同じでも固定桁の表記情報は変わるため、元の桁数を保存します。出力桁数の指定がある場合は、必要な位置へゼロを戻します。表記と値を別欄にすれば、省略の影響を見分けられます。
基数変換は入力と出力の基数を明記し、各桁が範囲内かを先に調べます。位の重みから中間値を求めれば、別基数への移し替えを記録できます。符号化のBase表記と位取りを区別し、名称だけで計算法を決めません。元の基数へ戻して値と桁情報が合えば、変換工程を検算できます。
