Conceito
Lembrar números pode ser difícil. Lembrar uma palavra pode ser mais fácil. Para memorizar grandes números, criei uma maneira de pronunciá-los de maneira semelhante ao leetspeak.
Regras
Cada dígito é substituído primeiro pela sua letra correspondente:
0 => O
1 => I
2 => R
3 => E
4 => A
5 => S
6 => G
7 => T
8 => B
9 => P
Após a substituição, duas coisas adicionais são feitas para melhorar a pronúncia:
Entre duas consoantes, a
U
é adicionado.Entre duas vogais, a
N
é adicionado.
Exemplos / casos de teste
512431 => SIRANENI
834677081 => BENAGUTUTOBI
3141592 => ENINANISUPUR
1234567890 => IRENASUGUTUBUPO
6164817 => GIGABIT
O que é impossível
- Letras e números misturados na mesma palavra
- Duas consoantes sucessivas ou duas vogais sucessivas
- Letras que não estão na lista acima
- Outros personagens
Regras
O objetivo deste código-golfe é criar um tradutor bidirecional para esse conceito.
- Seu programa deve primeiro entender por si mesmo se é tradução de letra para número ou número para letra.
- Ele deve verificar se a entrada é formada corretamente.
- Se tudo estiver correto, exiba a tradução.
- Senão, exiba uma mensagem de erro, nada, retorne um valor falsey ou trava o programa.
Detalhes
- O número / string de entrada pode ser inserido no formato que você desejar (stdin, argumento, ...)
- Isso é código-golfe , então a resposta mais curta vence.
- As brechas padrão são proibidas.
AB23
; AEI
; BB
; Z
; ACE
; giga
; !@#$
; -123
; etc. Além disso, com base nas regras de validação, podemos converter 6164735732 => GIGATESTER
, mas GIGATESTER
resultará em um valor falso, devido a ST
(regra de duas consoantes sucessivas). Da maneira como seu desafio está configurado atualmente, a parte principal do desafio é a validação, em vez da conversão. Estou bem com isso, mas a validação deve ser definida um pouco melhor nesse caso.
GIGATESTER
serGIGATESUTER
?