Diese Herausforderung basiert auf diesem Video . Ich empfehle, dass Sie es sehen, bevor Sie diese Herausforderung versuchen.
Zuerst definieren wir eine Funktion. Diese Funktion ( OEIS ) nimmt eine ganze Zahl n als Eingabe und gibt die Anzahl der Buchstaben in der englischen Darstellung von n aus (ohne Leerzeichen oder Bindestriche). Zum Beispiel "drei" hat 5 Buchstaben, also 3 Karten zu 5.
Wie im Video gezeigt, wird aus dem Wiederholen einer beliebigen Zahl schließlich eine Vier, die sich für immer auf sich selbst überträgt.
Hier ist eine grobe gerichtete Grafik, die die Umlaufbahnen der Zahlen unter 16 zeigt:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Ihre Herausforderung besteht darin, die Anzahl der Schritte zu bestimmen, die eine Zahl ausführen wird (oder wie oft diese Funktion auf eine Zahl angewendet werden muss), bevor Sie vier erreichen (dh die Stufe in der abgebildeten Grafik).
Englisch Zahlen bilden
Hier ist eine kurze Erklärung, wie man englische Wörter für diese Herausforderung bilden sollte:
Die Nummern eins bis neunzehn sind:
eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, zehn, elf, zwölf, dreizehn, vierzehn, fünfzehn, sechzehn, siebzehn, achtzehn, neunzehn
Für Zahlen größer als neunzehn ist der Prozess wie folgt:
Wenn die Zahl eine Hunderterstelle hat, beginnen Sie mit dem Namen der Ziffer in der Hunderterstelle und "Hundert".
z.B
100 -> "onehundred"
Wenn der Rest weniger als zwanzig beträgt, fügen Sie die englische Darstellung des Restes hinzu.
z.B
714 -> "sevenhundredfourteen"
Andernfalls, wenn die Zehnerstelle nicht Null ist, fügen Sie die richtige Darstellung hinzu:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
z.B
470 -> "fourhundredseventy"
Schließlich, wenn es eine eigene Ziffer gibt, wird deren Darstellung angehängt
z.B
681 -> "sixhundredeightyone"
Weitere Bestimmungen
Bei Zahlen größer als einhundert sollten Sie das "und" weglassen, wenn Sie die Anzahl der Buchstaben zählen. Zum Beispiel ist 577 "fünfhundertseventyseven", das 23 Buchstaben hat.
Ihr Programm muss alle Ganzzahlen größer als 0 und kleiner als 1.000 als Eingabe über Standardmethoden akzeptieren.
Ihr Programm muss die Anzahl der Schritte ausgeben, die für Standardausgabemethoden erforderlich sind.
Das ist Codegolf, also gewinnt die Lösung mit den wenigsten Bytes.
Testfälle
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4