赤ちゃんが口を開くとき、彼らはただちらほらを吐いているだけではありません。彼らは実際、非常に先進的で大人に耐える暗号で話しています...
ベビートーク暗号
赤ちゃんが話すとき、それは、gogooa gagooook aagaaoooy
それぞれの単一スペースで区切られたセクションがキャラクターを表すように見えるかもしれません(したがって、上の例は3キャラクターを表します)。
セクションを解読するには、セクションに含まれるAsとOsの数を数える必要があります。ただし、他の母音に隣接するもののみをカウントします。たとえば、「gag」のAはカウントされませんが、「gaog」のAとOはカウントされます。
上記の例を数えると次のようになります。
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
次に、これらの値を使用して、入力をPolybius正方形のプレーンテキストに変換します。これは、英語のアルファベットを5x5で表したもので、「J」は省略されています(ベビートークでは、0カウント規則がテーブルに適用されることに注意してください)。
0 1 2 3 4
0 A B C D E
1 F G H I K
2 L M N O P
3 Q R S T U
4 V W X Y Z
Osの数を列として、Asの数を行として使用して、各セクションが表す文字を見つけます。
Section | Num Os | Num As | Character
gogooa | 2 | 1 | (2,1) -> H
gagooook | 4 | 0 | (4,0) -> E
aagaaoooy | 3 | 4 | (3,4) -> Y
これは、赤ちゃんが「HEY」と言っていることを示しています。
注:
-文字を表すセクションに4つ以上のAsまたはOがある場合、4はテーブルの最大値であるため、余分な文字を無視します。-このタスクでは、Yは母音ではなく、A、E、I、O、Uのみです。
チャレンジ
あなたの仕事は、1つの入力、赤ちゃんの言葉での単語を取り、それを平文で印刷する完全なプログラムを作成することです。
- プログラムは、大文字、小文字、および両方の組み合わせで入力を取得できる必要があります。
- 入力にはASCIIアルファベット文字(AZおよびaz)のみが含まれ、赤ちゃんの単語を区切るための単一のスペースが含まれます。
- 出力テキストはどのような場合でもかまいません。
- から入力を取得し
STDIN
、プレーンテキストを印刷する必要がありますSTDOUT
。言語にこれらがない場合は、最も近いものを使用してください。 - これはcode-golfであるため、バイト単位の最短コードが勝ちますが、どんなソリューションでも大歓迎です。
テストケース
'GLOOG KAKAAOOO ARGOOO OOOOOGUGUU' -> CODE
'oaka pooopaa gaau augu' -> GOLF
'Aoao U oOOAoa oaoAoo aoAoAOa' -> NAPPY
'GUG gAGaA gOougOou' -> ALE
'OOaGOG GoGOOoGoU gAA bLAA GOUGoOUgAIGAI' -> HELLO
.toUpperCase()
、実際に刺激的なチャレンジではなく、または同様の関数呼び出しを追加することです
gogooa
ように2つのOを持っていますか?そして、どのようにgagooook
0のaを持っていますか?
FAG
:P
'GUG gAGaA gOougOou' -> 'ALE'
赤ちゃんはエールを飲みますか?:D