Quando i bambini aprono la bocca, non stanno solo vomitando senza senso. In realtà stanno parlando in una cifra altamente avanzata, a prova di adulto ...
The Baby-talk Cipher
Quando un bambino parla, potrebbe assomigliare a gogooa gagooook aagaaoooy
Ogni sezione separata da uno spazio singolo rappresenta un personaggio (quindi l'esempio sopra rappresenta 3 caratteri).
Per decifrare una sezione, dobbiamo contare il numero di As e Os che contiene. Tuttavia, contiamo solo quelli che sono adiacenti a un'altra vocale. Ad esempio, A in "gag" non conta, ma sia A che O in "gaog" lo farebbero.
Contare l'esempio sopra sarebbe simile a questo:
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
Quindi usiamo questi valori per convertire l'input in testo semplice su un quadrato di Polybius. Questa è una rappresentazione 5x5 dell'alfabeto inglese, omettendo 'J' (si noti che, in baby-talk, le regole di conteggio 0 si applicano alla tabella):
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 il numero di Os come colonna e il numero di As come riga, troviamo quale carattere rappresenta ciascuna sezione:
Section | Num Os | Num As | Character
gogooa | 2 | 1 | (2,1) -> H
gagooook | 4 | 0 | (4,0) -> E
aagaaoooy | 3 | 4 | (3,4) -> Y
Il che ci dice che il bambino stava solo dicendo "HEY".
Note :
- Se una sezione che rappresenta un personaggio ha più di 4 As o Os, ignora gli extra, perché 4 è il valore massimo sulla tabella. - Per questa attività, Y non è una vocale - solo A, E, I, O e U.
La sfida
Il tuo compito è creare un programma completo che accetta un input, una parola in baby-speak e lo stampa in chiaro.
- Il programma deve essere in grado di accettare input in maiuscolo, minuscolo e un mix di entrambi.
- L'input conterrà solo lettere dell'alfabeto ASCII (AZ e az), con spazi singoli per separare le parole del bambino.
- Il testo di output può essere in ogni caso.
- Dovresti prendere l'input
STDIN
e stampare il testo in chiaroSTDOUT
. Se la tua lingua non li possiede, usa l'equivalente più vicino. - Questo è code-golf , quindi vince il codice più breve in byte, ma qualsiasi soluzione è benvenuta.
Casi 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()
chiamata di funzione o simile, non una sfida davvero stimolante
gogooa
hanno 2 o? E come gagooook
hanno 0 a?
FAG
: P
'GUG gAGaA gOougOou' -> 'ALE'
I bambini bevono birra? : D