Questa sfida si basa su questo video . Ti consiglio di guardarlo prima di provare questa sfida.
Per prima cosa definiamo una funzione. Questa funzione ( OEIS ) accetta un numero intero n come input e genera il numero di lettere nella rappresentazione inglese di n (senza spazi o trattini). Ad esempio "tre" ha 5 lettere, quindi 3 mappe a 5.
Come dimostrato nel video che inizia con qualsiasi numero che si ripete, questo processo alla fine si tradurrà in un quattro, che verrà mappato su se stesso per sempre.
Ecco un grafico diretto grezzo che mostra le orbite dei numeri inferiori a 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
La tua sfida consiste nel determinare il numero di passaggi che un numero eseguirà (o il numero di volte in cui questa funzione deve essere applicata a un numero) prima di raggiungere quattro (ovvero il livello sul grafico diretto rappresentato).
Formare numeri inglesi
Ecco una breve spiegazione di come si dovrebbero formare parole inglesi per questa sfida:
I numeri da uno a diciannove sono:
uno, due, tre, quattro, cinque, sei, sette, otto, nove, dieci, undici, dodici, tredici, quattordici, quindici, sedici, diciassette, diciotto, diciannove
Per numeri maggiori di diciannove il processo è il seguente:
Se il numero ha un posto di centinaia, inizia con il nome della cifra nel posto di centinaia e "cento".
per esempio
100 -> "onehundred"
Se il resto è inferiore a venti, aggiungi la rappresentazione inglese del resto.
per esempio
714 -> "sevenhundredfourteen"
Altrimenti se la cifra delle decine non è zero aggiungere la rappresentazione corretta:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
per esempio
470 -> "fourhundredseventy"
Infine, se c'è una cifra, aggiungi la sua rappresentazione
per esempio
681 -> "sixhundredeightyone"
Ulteriori Stipulazioni
Per numeri superiori a cento, dovresti tralasciare "e" quando contate il numero di lettere. Ad esempio 577 è "cinquecentosettantasette" che ha 23 lettere.
Il tuo programma deve accettare tutti i numeri interi maggiori di 0 e inferiori a 1.000 come input tramite metodi standard.
Il programma deve generare il numero di passaggi richiesti per i metodi di output standard.
Questo è codegolf, quindi vince la soluzione con il minor numero di byte.
Casi test
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4