To wyzwanie jest oparte na tym filmie . Zalecam obejrzenie go przed wypróbowaniem tego wyzwania.
Najpierw definiujemy funkcję. Ta funkcja ( OEIS ) przyjmuje na wejściu liczbę całkowitą n i wyświetla liczbę liter w angielskiej reprezentacji n (bez spacji i łączników). Na przykład „trzy” ma 5 liter, więc 3 odwzorowuje na 5.
Jak pokazano na filmie rozpoczynającym się od dowolnej liczby powtarzającej się, ten proces ostatecznie doprowadzi do liczby 4, która będzie mapować się na zawsze.
Oto przybliżony skierowany wykres pokazujący orbity liczb mniejsze niż 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Wyzwanie polega na określeniu liczby kroków, które wykona liczba (lub ile razy ta funkcja musi zostać zastosowana do liczby) przed osiągnięciem czterech (tj. Poziom na pokazanym wykresie skierowanym).
Formowanie liczb angielskich
Oto krótkie wyjaśnienie, w jaki sposób należy sformułować angielskie słowa dla tego wyzwania:
Numery od jeden do dziewiętnaście to:
jeden, dwa, trzy, cztery, pięć, sześć, siedem, osiem, dziewięć, dziesięć, jedenaście, dwanaście, trzynaście, czternaście, piętnaście, szesnaście, siedemnaście, osiemnaście, dziewiętnaście
W przypadku liczb większych niż dziewiętnaście proces wygląda następująco:
Jeśli liczba ma setki miejsc, zacznij od nazwy cyfry w setkach miejsc i „sto”.
na przykład
100 -> "onehundred"
Jeśli reszta jest mniejsza niż dwadzieścia, dołącz reprezentację w języku angielskim.
na przykład
714 -> "sevenhundredfourteen"
W przeciwnym razie, jeśli cyfra dziesiątek nie jest zerowa, dołącz odpowiednią reprezentację:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
na przykład
470 -> "fourhundredseventy"
Wreszcie, jeśli jest jedna cyfra, dołącz jej reprezentację
na przykład
681 -> "sixhundredeightyone"
Dalsze postanowienia
W przypadku liczb większych niż sto należy pominąć znaki „i” podczas liczenia liczby liter. Na przykład 577 to „pięćset siedemdziesiąt siedem”, które ma 23 litery.
Twój program musi akceptować wszystkie liczby całkowite większe niż 0 i mniejsze niż 1000 jako dane wejściowe standardowymi metodami.
Twój program musi wypisać liczbę kroków wymaganych do standardowych metod wyjścia.
To jest codegolf, więc wygrywa rozwiązanie z najmniejszą liczbą bajtów.
Przypadki testowe
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4