Lorsque les bébés ouvrent la bouche, ils ne se contentent pas de cracher du charabia. Ils parlent en fait dans un chiffrement très avancé et à l'épreuve des adultes ...
Le chiffre Baby-Talk
Quand un bébé parle, cela pourrait ressembler à quelque chose. gogooa gagooook aagaaoooy
Chaque section séparée par un espace représente un caractère (donc l'exemple ci-dessus représente 3 caractères).
Pour déchiffrer une section, nous devons compter le nombre d'As et d'Os qu'elle contient. Cependant, nous ne comptons que ceux qui sont adjacents à une autre voyelle. Par exemple, le A dans «gag» ne compterait pas, mais le A et O dans «gaog» le feraient.
Compter l'exemple ci-dessus ressemblerait à ceci:
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
Nous utilisons ensuite ces valeurs pour convertir l'entrée en texte brut sur un carré de Polybe. Il s'agit d'une représentation 5x5 de l'alphabet anglais, en omettant 'J' (veuillez noter que, dans baby-talk, les règles de comptage 0 s'appliquent au tableau):
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
En utilisant le nombre d'Os comme colonne et le nombre d'As comme ligne, nous trouvons quel caractère chaque section représente:
Section | Num Os | Num As | Character
gogooa | 2 | 1 | (2,1) -> H
gagooook | 4 | 0 | (4,0) -> E
aagaaoooy | 3 | 4 | (3,4) -> Y
Ce qui nous dit que le bébé venait de dire "HEY".
Remarques :
- Si une section représentant un personnage a plus de 4 As ou Os, ignorez les extras, car 4 est la valeur maximale sur la table. - Pour cette tâche, Y n'est pas une voyelle - seulement A, E, I, O et U.
Le défi
Votre tâche consiste à créer un programme complet qui prend une entrée, un mot en langage bébé et l'imprime en texte clair.
- Votre programme doit être en mesure de saisir des données en majuscules, en minuscules et un mélange des deux.
- L'entrée ne contiendra que des lettres de l'alphabet ASCII (AZ et az), avec des espaces simples pour séparer les mots du bébé.
- Le texte de sortie peut être dans tous les cas.
- Vous devez prendre l'entrée
STDIN
et imprimer le texte en clairSTDOUT
. Si votre langue n'en possède pas, utilisez l'équivalent le plus proche. - Il s'agit de code-golf , donc le code le plus court en octets l'emporte - mais toute solution est la bienvenue.
Cas de test
'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()
appel de fonction ou similaire, pas un défi réellement stimulant
gogooa
a 2 o? Et comment gagooook
a 0 a?
FAG
: P
'GUG gAGaA gOougOou' -> 'ALE'
Les bébés boivent de la bière? : D