Die digitale Wurzel (auch wiederholte digitale Summe) einer positiven Ganzzahl ist der (einstellige) Wert, der durch einen iterativen Prozess zum Summieren von Ziffern bei jeder Iteration unter Verwendung des Ergebnisses der vorherigen Iteration zur Berechnung einer Ziffernsumme erhalten wird. Der Vorgang wird fortgesetzt, bis eine einstellige Zahl erreicht ist.
Zum Beispiel kann die digitale Wurzel 65536 ist 7 , weil 6 + 5 + 5 + 3 + 6 = 25 und 2 + 5 = 7 .
Das Sortieren aller digitalen Wurzeln ist wenig sinnvoll, da es nur mit unendlich vielen 1 beginnen würde s beginnen würde.
Stattdessen erstellen wir Listen aller einstelligen Ganzzahlen mit ihren digitalen Wurzeln, dann aller zweistelligen Zahlen mit ihren digitalen Wurzeln, dann der dreifachen, vierfachen und so weiter.
Für jede dieser Listen sortieren wir sie so, dass zuerst alle Ganzzahlen mit digitalen Wurzeln von 1 und dann alle Ganzzahlen mit digitalen Wurzeln von 2 und so weiter angezeigt werden. Die Sortierung ist stabil, sodass die Liste der Ganzzahlen mit bestimmten digitalen Wurzeln nach der Sortierung aufsteigend sortiert sein sollte.
Schließlich werden wir diese Listen zu einer einzigen Sequenz verketten. Diese Sequenz beginnt mit allen einstelligen Zahlen, dann allen zweistelligen Zahlen (sortiert nach ihrer digitalen Wurzel), dann allen dreistelligen Zahlen und so weiter.
Herausforderung:
Nehmen Sie eine positive ganze Zahl n als Eingabe und geben Sie die n -te Zahl in der oben beschriebenen Reihenfolge aus. Sie können wählen, ob die Liste ist 0 von 1 ist indiziert ist.
Die Sequenz sieht folgendermaßen aus:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ...
72, 81, 90, 99, 100, 109, 118, ...
981, 990, 999, 1000, 1009, 1018, 1027, ...
Testfälle:
Die Testfälle sind 1-indiziert.
n f(n)
9 9
10 10
11 19
40 13
41 22
42 31
43 40
44 49
45 58
600 105
601 114
602 123
603 132
604 141
605 150
4050 1453
4051 1462
4052 1471
4053 1480
4054 1489
4055 1498
Einfacher zu kopieren:
n = 9, 10, 11, 40, 41, 42, 43, 44, 45, 600, 601, 602, 603, 604, 605, 4050, 4051, 4052, 4053, 4054, 4055,
f(n) = 9, 10, 19, 13, 22, 31, 40, 49, 58, 105, 114, 123, 132, 141, 150, 1453, 1462, 1471, 1480, 1489, 1498
Klarstellungen:
- Sie können möglicherweise nicht alle n ersten Elemente ausgeben . Du sollst nur das ausgeben n -te aus.
- Der Code muss theoretisch für alle ganzen Zahlen bis 10 ^ 9 funktionieren , aber es ist in Ordnung, wenn bei Eingaben über 999 eine Zeitüberschreitung bei TIO (oder anderen Interpretern mit zeitlichen Einschränkungen) auftritt .
- Erklärungen sind erwünscht.
Es ist Code-Golf , also gewinnt der kürzeste Code in jeder Sprache! Lassen Sie sich nicht von anderen Lösungen in der Sprache entmutigen, in der Sie Golf spielen möchten, auch wenn sie kürzer sind als Sie es schaffen!