Objetivo
Genere la lista codificada original, a partir de los movimientos que haría una Clasificación de inserción para ordenarla. La lista original tendrá todos los números desde 0
hasta N-1
(inclusive) donde N
está el tamaño de la entrada.
Entrada
Una lista que contiene los movimientos necesarios para ordenar la lista. Cada valor representa la cantidad de ranuras desplazadas por el número original (codificado) para estar en su posición correcta, tenga en cuenta que este proceso es de izquierda a derecha.
El valor en la posición (indexada a 0) i
en la lista de entrada estará entre 0
e i
inclusive.
No necesita manejar entradas inválidas, cualquier comportamiento es aceptable en este caso (bloqueo, bucle infinito, etc.).
Salida
La lista revuelta
Paso a paso para generar los movimientos.
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]
Entonces, para la entrada, [0,1,1,2,1,0]
su programa necesita salir [4,0,2,1,3,5]
.
Tenga en cuenta que los movimientos no están en la posición en la lista ordenada (final), sino en el segmento ordenado (la sección en negrita)
Casos de prueba
[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]
Victorioso
Este es el código de golf , por lo que gana la respuesta más corta.