Obbiettivo
Genera l'elenco criptato originale, dai movimenti che farebbe un ordinamento di inserzione per ordinarlo. L'elenco originale avrà tutti i numeri da 0
a N-1
(incluso) dove si N
trova la dimensione dell'input.
Ingresso
Un elenco contenente le mosse necessarie per ordinare l'elenco. Ogni valore rappresenta la quantità di slot spostati dal numero originale (criptato) per essere nella sua posizione giusta, tenere presente che questo processo è da sinistra a destra.
Il valore nella posizione (indicizzata 0) i
nell'elenco di input sarà compreso 0
e i
compreso.
Non è necessario gestire input non validi, in questo caso è accettabile qualsiasi comportamento (crash, loop infinito, ecc.).
Produzione
L'elenco criptato
Step-by-step per generare le mosse
Scrambled List | Moves to sort
[4,0,2,1,3,5] | [0, , , , , ] #4 stay in place
[4,0,2,1,3,5] | [0,1, , , , ] #0 is moved 1 slot to the left
[0,4,2,1,3,5] | [0,1,1, , , ] #2 is moved 1 slot
[0,2,4,1,3,5] | [0,1,1,2, , ] #1 is moved 2 slot
[0,1,2,4,3,5] | [0,1,1,2,1, ] #3 is moved 1 slot
[0,1,2,3,4,5] | [0,1,1,2,1,0] #5 is in the right place already
[0,1,2,3,4,5]
Quindi, per l'input il [0,1,1,2,1,0]
tuo programma deve produrre [4,0,2,1,3,5]
.
Tieni presente che i movimenti non sono nella posizione nell'elenco (finale) ordinato, ma nel segmento ordinato (la sezione in grassetto)
Casi test
[0,0,0] -> [0,1,2]
[0,1,0,1] -> [1,0,3,2]
[0,0,0,0,0,5] -> [1,2,3,4,5,0]
[0,1,2,3] -> [3,2,1,0]
[0,1,1,1] -> [3,0,1,2]
[0,1,1,2,1,0] -> [4,0,2,1,3,5]
vincente
Questo è code-golf , quindi vince la risposta più breve.