前書き:
私は子供の頃にコンパイルしたドキュメントにさまざまな暗号を保存しており、チャレンジに最も適していると考えたものをいくつか選んで(些細ではなく、難しくもありません)チャレンジに変換しました。それらのほとんどはまだサンドボックス内にあり、それらすべてを投稿するのか、それともほんの少数を投稿するのかはまだわかりません。これが2番目の(コンピューター暗号は、私が最初に投稿したものです)。
以下のための三裂星雲暗号アルファベット(キーワードを使用せずに)、(および追加のワイルドカード)は、3つの3×3テーブルに分割されます。
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
暗号化するテキストは、テーブル行列番号にエンコードされた文字ごとの最初の文字です。たとえば、テキストthis is a trifid cipher
は次の。
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
次に、上の表の3行ごとにすべてを行ごとに配置します。
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
そして、それらは同じテーブルを使用して文字に変換されます。
s y y z a g d d y y u i q u z w u u h u y o
入力長は3の素数でなければなりません。したがって、長さが3の倍数である場合は、1つまたは2つの末尾スペースを追加して、入力長が3の倍数ではないようにします。
チャレンジ:
与えられた文字列 sentence_to_encipher
、上記のように暗号化します。
暗号化する必要があるのは sentence_to_encipher
できるため、解読プログラム/関数を作成する必要もありません。ただし、将来の解読については、パート2の課題に取り組む可能性があります(ただし、暗号化プロセスとは些細な、または類似していると感じていますが)。
チャレンジルール:
- あなたが仮定することができます
sentence_to_encipher
は文字とスペースのみが含まれるます。 - 完全な小文字または完全な大文字を使用できます(回答で使用したものを明記してください)。
- 入力長が3の場合、1または2の末尾スペースを追加して、3の倍数にならないようにすることができます。
- I / Oは柔軟です。入力と出力の両方は、文字列、文字のリスト/配列/ストリームなどです。
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - デフォルトのI / Oルールを使用した回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッド、適切なパラメーター、戻り値型、完全なプログラムを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)