Este desafío se basa en este video . Te recomiendo que lo mires antes de intentar este desafío.
Primero definimos una función. Esta función ( OEIS ) toma un número entero n como entrada y genera el número de letras en la representación inglesa de n (sin espacios ni guiones). Por ejemplo, "tres" tiene 5 letras, de modo que 3 se asignan a 5.
Como se demostró en el video que comienza con cualquier número que se repita, este proceso eventualmente dará como resultado un cuatro, que se asignará a sí mismo para siempre.
Aquí hay un gráfico dirigido bruto que muestra las órbitas de los números menores que 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Su desafío es determinar la cantidad de pasos que tomará un número (o la cantidad de veces que esta función debe aplicarse a un número) antes de llegar a cuatro (es decir, el nivel en el gráfico dirigido en la imagen).
Formando números ingleses
Aquí hay una breve explicación de cómo se deben formar palabras en inglés para este desafío:
Los números del uno al diecinueve son:
uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, once, doce, trece, catorce, quince, dieciseis, diecisiete, dieciocho, diecinueve
Para números mayores de diecinueve, el proceso es el siguiente:
Si el número tiene un lugar de cientos, comience con el nombre del dígito en el lugar de cientos y "cien".
p.ej
100 -> "onehundred"
Si el resto es inferior a veinte, agregue la representación en inglés del resto.
p.ej
714 -> "sevenhundredfourteen"
De lo contrario, si el dígito de las decenas no es cero, agregue la representación adecuada:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
p.ej
470 -> "fourhundredseventy"
Finalmente, si hay un dígito, agregue su representación
p.ej
681 -> "sixhundredeightyone"
Estipulaciones adicionales
Para números superiores a cien, debe omitir "y" al contar el número de letras. Por ejemplo, 577 es "quinientos setenta y siete" que tiene 23 letras.
Su programa debe aceptar todos los enteros mayores que 0 y menores que 1,000 como entrada a través de métodos estándar.
Su programa debe generar la cantidad de pasos necesarios para los métodos de salida estándar.
Este es codegolf, por lo que gana la solución con la menor cantidad de bytes.
Casos de prueba
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4