Erstellen wir ein Zahlensystem, bei dem die größte Ziffer im Wert der n-ten Stelle (von rechts nach links) einer Zahlenlänge m immer gleich m - n + 1 ist. Um ein Beispiel zu geben, die größte 5-stellige Zahl, die in diesem System ausgedrückt werden kann wird 12345 geschrieben. Abgesehen von der Anzahl der verfügbaren Ziffern, die an einem bestimmten Ort verwendet werden können, ist jede andere Inkrementierung Standard. Wenn eine Ziffer ihre Zifferngrenze überschreiten soll, fügen wir der nächsten Ziffer eine hinzu.
So würde das Zählen in diesem System dargestellt:
1; 10; 11; 12; 100; 101; 102; 103; 110; 111; 112; 113; 120; 121; 122; 123; 1000; 1001 ...
Ihre Aufgabe ist es, eine Funktion zu schreiben, die eine Standard-Basis-10-Nummer verwendet und in mein Nummerierungssystem konvertiert.
Kürzerer Code ist vorzuziehen. Viel Glück!
** Wenn Sie nach 9 Ziffern benötigen (sollten Sie), können Sie Buchstaben verwenden oder eine zweistellige Zahl als Element einer Liste zurückgeben.
Testfälle
10 -> 111
20 -> 1003
30 -> 1023
50 -> 1123
100 -> 10035
23116 -> 1234567
21977356 -> 123456789A
Der letzte Fall kann je nach Implementierung unglaublich langsam ausgeführt werden. Sie müssen es nicht ausführen, wenn es zu lange dauert oder zu viel Speicher benötigt. Beachten Sie jedoch, dass es Möglichkeiten gibt, es schnell und mit wenig Speicher auszuführen.
100 -> 10035
eher als 100 -> 10033
, können Sie überprüfen?