前書き:
私は子供の頃にコンパイルしたドキュメントにさまざまな暗号を保存しており、チャレンジに最も適していると考えたものをいくつか選んで(些細ではなく、難しくもありません)チャレンジに変換しました。それらのほとんどはまだサンドボックス内にあり、それらすべてを投稿するのか、それともほんの少数を投稿するのかはまだわかりません。しかし、ここで最初のものを始めます。
Computer Cipherは、指定されたテキストを指定されたの「ランダムな」文字グループに暗号化しますlength
。そのようなグループに数字が含まれている場合、その数字を使用して、暗号化された文字の独自のグループにインデックスを付けます。グループに数字がない場合、最初の文字が使用されることを意味します。
たとえばthis is a computer cipher
、指定された長さのテキストを暗号化したいとしましょう5
。これは潜在的な出力です(注:次の例では、番号は1から始まります)。
t h i s i s a c o m p u t e r c i p h e r (without spaces of course, but added as clarification)
qu5dt hprit k3iqb osyw2 jii2o m5uzs akiwb hwpc4 eoo3j muxer z4lpc 4lsuw 2tsmp eirkr r3rsi b5nvc vid2o dmh5p hrptj oeh2l 4ngrv (without spaces of course, but added as clarification)
グループを解読する方法を説明するために、いくつかのグループを例としてみましょう。
qu5dt
:このグループには数字が含まれている5
ため、このグループの(1から始まる)5番目の文字は、解読されたテキストに使用される文字ですt
。hprit
:このグループには数字が含まれないため、このグループの最初の文字は、解読されたテキストに暗黙的に使用されますh
。osyw2
:このグループには数字が含まれている2
ため、このグループの(1から始まる)2番目の文字は、解読されたテキストに使用される文字ですs
。
チャレンジ:
整数length
と文字列を指定するとword_to_encipher
、上記のようにランダムに暗号化された文字列を出力します。
length
andを指定するだけで暗号化word_to_encipher
する必要があるため、解読プログラム/関数を作成する必要もありません。ただし、将来の解読では、パート2の課題に取り組む可能性があります。
チャレンジルール:
length
範囲内にあると想定できます[3,9]
。- に
word_to_encipher
は文字のみが含まれると想定できます。 - 小文字でも大文字でも使用できます(回答で使用したものを明記してください)。
- 出力、すべてのグループ、およびグループ内の数字の位置(存在する場合)は、一様にランダムでなければなりません。したがって、アルファベットのすべてのランダムな文字は、発生する可能性が同じです。各グループ内の暗号化された文字の位置は、発生する可能性が同じです。また、数字の位置は、発生する可能性が同じです(最初の文字で数字が存在しない場合を除き、暗号化された文字と同じ位置にあることは明らかにできません)。
- 1インデックスの代わりに0インデックスの数字を使用することもできます。回答でどちらを使用したかを明記してください。
- 数字
1
(または0
0がインデックス付けされている場合)は出力に表示されません。したがってb1ndh
、文字「b」を暗号化する有効なグループではありません。しかし、b4tbw
有効であり、ここで4
暗号化しb
4における(1インデックス)の位置、および他の文字はb
、t
、w
(偶然にも含まれているランダムですb
)。他の可能な有効なグループのlength
文字「B」を暗号化するための5は以下のとおりです。abcd2
、ab2de
、babbk
、hue5b
、など
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、非コードゴルフ言語で回答を投稿することを妨げないでください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 標準のルールがデフォルトのI / Oルールを使用した回答に適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
Input:
Length: 5
Word to encipher: thisisacomputercipher
Possible output:
qu5dthpritk3iqbosyw2jii2om5uzsakiwbhwpc4eoo3jmuxerz4lpc4lsuw2tsmpeirkrr3rsib5nvcvid2odmh5phrptjoeh2l4ngrv
Input:
Length: 8
Word to encipher: test
Possible output:
ewetng4o6smptebyo6ontsrbtxten3qk
Input:
Length: 3
Word to encipher: three
Possible output:
tomv3h2rvege3le
abcd2
、ab2de
、babbk
すべて同じ?またb1akk
有効ですか?
b1akk
私はノーと言うだろう。明確にするために、チャレンジの説明でそれを編集します。最初の文字が暗号化されたものである場合、数字は存在しないはずです。
"a??"
は676の可能な結果がありますが"1a?"
、"?a1"
、"2?a"
、"?2a"
、only104結果を持っています。したがって、これら780の結果すべてから1つの結果を選択しようとすると、「暗号化された文字の位置」の分布は、1:1:1ではなく13:1:1になります。そして、私はこれを「均一にランダム」に機能する方法と見なします。