O desafio é realmente simples: dado um número, você divide seus dígitos em uma matriz de números menores, de forma que os números resultantes não diminuem. O problema é que você precisa dividi-lo para que o comprimento da matriz seja o máximo.
Confuso?
- Você recebe um número inteiro positivo via STDIN (ou alternativa mais próxima), argumento de linha de comando ou argumento de função em qualquer formato de entrada conveniente e inequívoco.
- Você precisa particionar os dígitos decimais do número em grupos contíguos e independentes.
- A matriz de números representada por esses grupos de dígitos deve ser classificada (na ordem habitual e não decrescente) sem reorganizar os grupos .
- Nos casos em que existe mais de uma partição, é necessário particionar a entrada no maior número possível. No caso de empate, retorne um desses resultados.
- Você pode enviar a matriz para STDOUT (ou alternativa mais próxima) ou como um valor de retorno da função. No caso de STDOUT (ou alternativa mais próxima), a matriz deve ser impressa em qualquer formato de lista conveniente e inequívoco.
- Os números de divisão não devem ter zeros à esquerda. Assim, por exemplo,
1002003
não pode ser impresso como um e[1, 002, 003]
nem[1, 2, 3]
a única resposta válida para isso[100, 2003]
.
Casos de teste:
123456 -> [1, 2, 3, 4, 5, 6]
345823 -> [3, 4, 5, 8, 23]
12345678901234567890 -> [1, 2, 3, 4, 5, 6, 7, 8, 90, 123, 456, 7890]
102 -> [102]
302 -> [302]
324142 -> [3, 24, 142] OR [32, 41, 42]
324142434445 -> [32, 41, 42, 43, 44, 45]
1356531 -> [1, 3, 5, 6, 531]
11121111111 -> [1, 1, 1, 2, 11, 11, 111]
100202003 -> [100, 202003]
Pontuação
Este é o código-golfe, pelo que o código mais curto em bytes vence.
aY
vez de~Y]