当婴儿张开嘴时,他们不仅在吐胡言乱语。他们实际上是在使用高度先进的,可证明成人身份的密码...
婴儿说话密码
婴儿说话时,看起来像是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或Os,则忽略多余部分,因为4是表上的最大值。-对于此任务,Y不是元音-只有A,E,I,O和U。
挑战
您的任务是创建一个完整的程序,该程序接受一个输入,一个以婴儿口语表达的单词,然后以纯文本形式打印出来。
- 您的程序必须能够以大写,小写或二者兼有的方式接受输入。
- 输入将仅包含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点?怎么gagooook
有0个?
FAG
:P
'GUG gAGaA gOougOou' -> 'ALE'
婴儿喝强麦酒吗?:D