La sfida è davvero semplice: dato un numero, dividi le sue cifre in una matrice di numeri più piccoli in modo che i numeri risultanti non siano decrescenti. Il problema è che devi dividerlo in modo tale che la lunghezza dell'array sia massima.
Confuso?
- Ti viene dato un numero intero positivo tramite STDIN (o l'alternativa più vicina), argomento della riga di comando o argomento della funzione in qualsiasi formato di input comodo e inequivocabile.
- Devi suddividere le cifre decimali del numero in gruppi contigui e disgiunti.
- L'array di numeri rappresentato da questi gruppi di cifre deve essere ordinato (nell'ordine consueto, non decrescente) senza riordinare i gruppi .
- Nei casi in cui esiste più di una di queste partizioni, è necessario suddividere l'input nel maggior numero possibile. In caso di parità, restituire uno di questi risultati.
- È possibile generare l'array su STDOUT (o l'alternativa più vicina) o come valore di ritorno della funzione. Nel caso di STDOUT (o alternativa più vicina), l'array deve essere stampato in qualsiasi formato di elenco comodo e inequivocabile.
- I numeri di divisione non dovrebbero avere zero iniziali. Quindi, ad esempio,
1002003
non può essere stampato come o[1, 002, 003]
o[1, 2, 3]
e l'unica risposta valida è[100, 2003]
.
Casi test:
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]
punteggio
Questo è code-golf, quindi vince il codice più breve in byte.
aY
invece di~Y]