Stwórzmy system liczb, w którym największa cyfra w n-tym miejscu wartości (licząc od prawej do lewej) o długości liczby m jest zawsze równa m - n + 1. Na przykład największa 5-cyfrowa liczba wyrażalna w tym systemie jest napisany 12345. Poza liczbą cyfr dostępnych do użycia w określonym miejscu, które jest ograniczone, wszystkie inne przyrosty są standardowe. Mianowicie, gdy cyfra ma przekroczyć limit cyfr, dodajemy ją do następnej cyfry.
Oto jak liczenie byłoby reprezentowane w tym systemie:
1; 10; 11; 12; 100; 101; 102; 103; 110; 111; 112; 113; 120; 121; 122; 123; 1000; 1001 ...
Twoim zadaniem jest napisanie funkcji, która pobierze standardową liczbę podstawową 10 i przekształci ją w mój system numeracji.
Preferowany jest krótszy kod. Bonne Chance!
** Jeśli potrzebujesz cyfr po 9 (powinieneś), możesz użyć liter lub możesz zwrócić 2-cyfrową liczbę jako element listy.
Przypadki testowe
10 -> 111
20 -> 1003
30 -> 1023
50 -> 1123
100 -> 10035
23116 -> 1234567
21977356 -> 123456789A
Ostatni przypadek może być niewiarygodnie powolny, w zależności od sposobu wdrożenia. Nie musisz go uruchamiać, jeśli trwa to zbyt długo lub zużywa zbyt dużo pamięci. Należy jednak pamiętać, że istnieją sposoby na szybkie uruchomienie i użycie niewielkiej ilości pamięci.
100 -> 10035
raczej 100 -> 10033
, czy możesz to zweryfikować?