Когда дети открывают рот, они не просто изрыгают тарабарщину. Они на самом деле говорят в очень продвинутом, защищенном от взрослых шифре ...
Шифр Baby-Talk
Когда ребенок говорит, он может выглядеть примерно так: gogooa gagooook aagaaoooy
каждый разделенный пробелами раздел представляет символ (поэтому в приведенном выше примере представлены 3 символа).
Чтобы расшифровать раздел, мы должны посчитать количество As и Os, которые в нем содержатся. Тем не менее, мы считаем только те, которые соседствуют с другой гласной. Например, A в 'gag' не будет учитываться, но A и O в 'gaog' будут учитываться.
Подсчет приведенного выше примера будет выглядеть так:
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
Затем мы используем эти значения для преобразования ввода в открытый текст на квадрате Полибия. Это представление английского алфавита в 5х5, в котором пропущен символ «J» (обратите внимание, что в режиме «baby-talk» к таблице применяются правила подсчета 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
Что говорит нам о том, что ребенок просто говорил "ЭЙ".
Примечания :
- Если раздел, представляющий символ, имеет более 4 символов «As» или «Os», игнорируйте дополнительные, потому что 4 является максимальным значением в таблице. - Для этой задачи Y не является гласным - только A, E, I, O и U.
Соревнование
Ваша задача состоит в том, чтобы создать полную программу, которая принимает один ввод, слово, говорящее по-детски, и печатает его в виде открытого текста.
- Ваша программа должна быть способна принимать ввод как в верхнем, так и в нижнем регистре, а также в обоих сочетаниях.
- Входные данные будут содержать только буквы алфавита ASCII (AZ и az) с одиночными пробелами для разделения слов ребенка.
- Выводить текст можно в любом случае.
- Вы должны принять данные
STDIN
и напечатать открытый текстSTDOUT
. Если на вашем языке их нет, используйте ближайший аналог. - Это код-гольф , поэтому выигрывает самый короткий код в байтах - но любое решение приветствуется.
Тестовые случаи
'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