Cuando los bebés abren la boca, no solo vomitan galimatías. En realidad, están hablando en un cifrado altamente avanzado a prueba de adultos ...
The Baby-talk Cipher
Cuando un bebé habla, podría verse algo así. gogooa gagooook aagaaoooy
Cada sección separada por un solo espacio representa un carácter (por lo que el ejemplo anterior representa 3 caracteres).
Para descifrar una sección, debemos contar el número de As y Os que contiene. Sin embargo, solo contamos los que están adyacentes a otra vocal. Por ejemplo, la A en 'gag' no contaría, pero tanto la A como la O en 'gaog' sí lo harían.
Contar el ejemplo anterior se vería así:
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
Luego usamos estos valores para convertir la entrada en texto sin formato en un cuadrado de Polybius. Esta es una representación de 5x5 del alfabeto inglés, omitiendo 'J' (tenga en cuenta que, en baby-talk, las reglas de conteo de 0 se aplican a la tabla):
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
Usando el número de Os como columna y el número de As como fila, encontramos qué carácter representa cada sección:
Section | Num Os | Num As | Character
gogooa | 2 | 1 | (2,1) -> H
gagooook | 4 | 0 | (4,0) -> E
aagaaoooy | 3 | 4 | (3,4) -> Y
Lo que nos dice que el bebé solo decía "HEY".
Notas :
- Si una sección que representa un personaje tiene más de 4 As u Os, ignore los extras, porque 4 es el valor máximo en la tabla. - Para esta tarea, Y no es una vocal, solo A, E, I, O y U.
El reto
Su tarea es crear un programa completo que tome una entrada, una palabra en baby-speak e imprima en texto sin formato.
- Su programa debe poder tomar entradas en mayúsculas, minúsculas y una combinación de ambas.
- La entrada solo contendrá letras del alfabeto ASCII (AZ y az), con espacios individuales para separar las palabras del bebé.
- El texto de salida puede ser en cualquier caso.
- Debe tomar la entrada
STDIN
e imprimir el texto sin formato enSTDOUT
. Si su idioma no tiene estos, use el equivalente más cercano. - Este es el código de golf , por lo que gana el código más corto en bytes, pero cualquier solución es bienvenida.
Casos de prueba
'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()
llamada de función o similar, no un desafío realmente estimulante
gogooa
tiene 2 o? ¿Y cómo gagooook
tiene 0 a's?
FAG
: P
'GUG gAGaA gOougOou' -> 'ALE'
Los bebes beben cerveza? : D