Eine Dreieckszahl ist eine Zahl, die als Summe aufeinanderfolgender positiver Ganzzahlen ab 1 ausgedrückt werden kann. Sie kann auch mit der Formel ausgedrückt werden n(n + 1) / 2, bei der nes sich um eine positive Ganzzahl handelt.
Das digitale Gegenstück einer Zahl wird folgendermaßen berechnet:
- Teilen Sie eine Zahl in ein Array von Ziffern, z
613 => [6 1 3] - Berechnen Sie für jede Zahl im Array die
ndritte Dreieckszahl.[6 1 3] => [21 1 6] - Summiere das resultierende Array;
[21 1 6] => 28
Ihre Aufgabe ist es, mit einer Ganzzahl das digitale Gegenstück zu nberechnen n, bis das Ergebnis gleich 1 ist, und dann alle berechneten Werte auszugeben. Sie können die Werte in beliebiger Reihenfolge und optional mit der ursprünglichen Nummer am Anfang des Arrays ausgeben. Dies ist ein Code-Golf, also gewinnt der kürzeste Code.
Testfälle
23 => 9 45 25 18 37 34 16 22 6 21 4 10 1
72 => 31 7 28 39 51 16 22 6 21 4 10 1
55 => 30 6 21 4 10 1
78 => 64 31 7 28 39 51 16 22 6 21 4 10 1
613 => 28 39 51 16 22 6 21 4 10 1
8392 => 90 45 25 18 37 34 16 22 6 21 4 10 1
11111 => 5 15 16 22 6 21 4 10 1
8592025 => 117 30 6 21 4 10 1
999999999 => 405 25 18 37 34 16 22 6 21 4 10 1
141und hat nZiffern. Der maximale Wert, den sein digitales Gegenstück haben kann, ist 45nalso digi-△(x) ≤ 45n < 45(1+log_10(x)), und für x > 141, wir haben 45(1+log_10(x)) < x, daher digi-△(x) ≤ x-1für x > 141, und sobald wir die 141Grenze überschreiten, beweisen wir brachiale Gewalt durch Programme.