Concetto
Ricordare i numeri può essere difficile. Ricordare una parola può essere più semplice. Al fine di memorizzare grandi numeri, ho creato un modo per pronunciarli in un modo simile al leetspeak.
Regole
Ogni cifra viene prima sostituita dalla lettera corrispondente:
0 => O
1 => I
2 => R
3 => E
4 => A
5 => S
6 => G
7 => T
8 => B
9 => P
Dopo la sostituzione, vengono fatte altre due cose per migliorare la pronuncia:
Tra due consonanti,
Uviene aggiunta una.Tra due vocali,
Nviene aggiunta una.
Esempi / casi di test
512431 => SIRANENI
834677081 => BENAGUTUTOBI
3141592 => ENINANISUPUR
1234567890 => IRENASUGUTUBUPO
6164817 => GIGABIT
Cosa è impossibile
- Lettere e numeri mescolati nella stessa parola
- Due consonanti successive o due vocali successive
- Lettere che non figurano nell'elenco sopra
- Altri caratteri
Regole
L'obiettivo di questo codice-golf è quello di creare un traduttore a 2 vie per questo concetto.
- Il tuo programma deve prima capire da solo se è una traduzione da lettera a numero o da numero a lettera.
- Deve verificare che la voce sia correttamente formata.
- Se tutto è corretto, visualizza la traduzione.
- Altrimenti, visualizza un messaggio di errore, niente, restituisce un valore false o arresta in modo anomalo il programma.
Dettagli
- Il numero / stringa di input può essere inserito in qualsiasi formato desiderato (stdin, argomento, ...)
- Questo è code-golf , quindi vince la risposta più breve.
- Sono vietate le scappatoie standard.
AB23; AEI; BB; Z; ACE; giga; !@#$; -123; ecc. Inoltre, in base alle regole di convalida, possiamo convertire 6164735732 => GIGATESTER, ma GIGATESTERrisulterà in un valore falso, a causa di ST(regola delle due consonanti successive). Il modo in cui la sfida è attualmente impostata, la parte principale della sfida è la convalida, anziché la conversione. Sto bene, ma la validazione dovrebbe essere definita un po 'meglio in quel caso.
GIGATESTERessereGIGATESUTER?