Quando os bebês abrem a boca, eles não estão apenas cuspindo bobagens. Eles estão realmente falando em uma cifra altamente avançada e à prova de adultos ...
A Cifra de Conversa de Bebê
Quando um bebê fala, pode parecer algo como gogooa gagooook aagaaoooy
Cada seção separada por espaço único representa um caractere (portanto, o exemplo acima representa 3 caracteres).
Para decifrar uma seção, devemos contar o número de As e Os que ela contém. No entanto, contamos apenas aqueles que são adjacentes a outra vogal. Por exemplo, o A em 'gag' não conta, mas tanto o A quanto O em 'gaog' contam.
Contar o exemplo acima ficaria assim:
Section | Num Os | Num As
gogooa | 2 | 1
gagooook | 4 | 0
aagaaoooy | 3 | 4
Em seguida, usamos esses valores para converter a entrada em texto sem formatação em um quadrado Polybius. Esta é uma representação 5x5 do alfabeto inglês, omitindo 'J' (observe que, na conversa sobre bebês, as regras de contagem de 0 se aplicam à tabela):
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 o número de Os como a coluna e o número de As como a linha, encontramos qual caractere cada seção representa:
Section | Num Os | Num As | Character
gogooa | 2 | 1 | (2,1) -> H
gagooook | 4 | 0 | (4,0) -> E
aagaaoooy | 3 | 4 | (3,4) -> Y
O que nos diz que o bebê estava apenas dizendo "HEY".
Notas :
- Se uma seção que representa um caractere tiver mais de 4 As ou Os, ignore os extras, porque 4 é o valor máximo na tabela. - Para esta tarefa, Y não é uma vogal - apenas A, E, I, O e U.
O desafio
Sua tarefa é criar um programa completo que receba uma entrada, uma palavra no idioma do bebê, e a imprima em texto sem formatação.
- Seu programa deve poder receber entradas em maiúsculas, minúsculas e uma mistura de ambas.
- A entrada conterá apenas letras do alfabeto ASCII (AZ e az), com espaços únicos para separar as palavras do bebê.
- O texto de saída pode estar em qualquer caso.
- Você deve pegar a entrada
STDIN
e imprimir o texto sem formataçãoSTDOUT
. Se o seu idioma não possuir, use o equivalente mais próximo. - Isso é código-golfe , então o código mais curto em bytes vence - mas qualquer solução é bem-vinda.
Casos de teste
'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()
ou chamada de função semelhante, e não um desafio realmente estimulante
gogooa
tem 2 o's? E como gagooook
tem 0 a's?
FAG
: P
'GUG gAGaA gOougOou' -> 'ALE'
Bebês bebem cerveja? : D