Als ich ein Kind war und die Dollarnoten zu meinen Ersparnissen zählen wollte, zählte ich laut:
eins zwei drei vier fünf sechs sieben acht neun zehn;
elf, zwölf, dreizehn, vierzehn, fünfzehn, sechzehn, siebzehn, achtzehn, neunzehn, zwanzig;
einundzwanzig, zweiundzwanzig, dreiundzwanzig, vierundzwanzig, fünfundzwanzig ...
Schließlich hatte ich es satt, jede dieser mehrsilbigen Zahlen auszusprechen. Aus mathematischen Gründen habe ich eine wesentlich effizientere Methode zum Zählen entwickelt:
eins zwei drei vier fünf sechs sieben acht neun zehn;
eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, zwanzig;
eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, dreißig ...
Wie Sie sehen, würde ich nur die Ziffern aussprechen, die sich von der vorherigen Nummer geändert haben. Dies hat den zusätzlichen Vorteil, dass es sich bei Zahlen wesentlich häufiger als die englischen Namen wiederholt und daher weniger Brainpower für die Berechnung benötigt.
Herausforderung
Schreiben Sie ein Programm / eine Funktion, die eine positive Ganzzahl aufnimmt und ausgibt / zurückgibt, wie ich es zählen würde: das ist die am weitesten rechts stehende Ziffer ungleich Null und alle nachfolgenden Nullen.
Beispiele
1 1
2 2
10 10
11 1
29 9
30 30
99 9
100 100
119 9
120 20
200 200
409 9
1020 20
Eine vollständige Liste der Testfälle sollte nicht erforderlich sein. Dies ist A274206 auf OEIS.
Regeln
- Ihre Eingabe muss theoretisch für alle positiven Ganzzahlen funktionieren, wobei Genauigkeits- und Speicherprobleme ignoriert werden.
- Ein- und Ausgabe müssen dezimal sein.
- Sie können festlegen, ob die Eingabe und / oder Ausgabe als Zahl, Zeichenfolge oder Ziffernfolge erfolgen soll.
- Die Eingabe ist garantiert eine positive Ganzzahl. Ihre Eingabe kann alles für ungültige Eingaben tun.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
[1,0,2,0]
->[2,0]
für den letzten Testfall? (Ich bin nicht sicher, was den Ausdruck "Einzelelement-Array" angeht).