Vamos criar um sistema de números em que o maior dígito no enésimo valor colocado (contando da direita para a esquerda) de um comprimento de número m é sempre igual a m - n + 1. Para dar um exemplo, o maior número de 5 dígitos expressável neste sistema está escrito 12345. Além do número de dígitos disponíveis para uso em um local específico estar restrito, todo o restante incremento é padrão. Ou seja, quando um dígito ultrapassa seu limite, adicionamos um ao próximo dígito.
Aqui está como a contagem seria representada neste sistema:
1; 10; 11; 12; 100; 101; 102; 103; 110; 111; 112; 113; 120; 121; 122; 123; 1000; 1001 ...
Sua tarefa é escrever uma função que pega um número base 10 padrão e o converte no meu sistema de numeração.
Código mais curto é preferível. Bonne Chance!
** Se você precisar de dígitos após 9 (você deve), poderá optar por usar letras ou retornar um número de 2 dígitos como elemento de uma lista.
Casos de teste
10 -> 111
20 -> 1003
30 -> 1023
50 -> 1123
100 -> 10035
23116 -> 1234567
21977356 -> 123456789A
O último caso pode ser incrivelmente lento para executar, dependendo de como você implementou. Você não precisa executá-lo se demorar muito ou usar muita memória. No entanto, observe que existem maneiras de executá-lo rapidamente e usando pouca memória.
100 -> 10035
mais do que 100 -> 10033
você pode verificar?