Задача
Сформировать первоначальный зашифрованный список, от движений , что вставки Сортировать бы сортировать его. Исходный список будет содержать все числа от 0
до N-1
(включительно), где N
указан размер ввода.
вход
Список, содержащий необходимые шаги для сортировки списка. Каждое значение представляет количество слотов, смещенных на исходное (скремблированное) число, чтобы быть в его правильном положении, имейте в виду, что этот процесс идет слева направо.
Значение в (0-индексированной) позиции i
в списке ввода будет между 0
и i
включительно.
Вам не нужно обрабатывать неправильные входные данные, в этом случае допустимо любое поведение (сбой, бесконечный цикл и т. Д.).
Выход
Скремблированный список
Пошаговая генерация ходов
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]
Итак, для ввода [0,1,1,2,1,0]
ваша программа должна выводиться [4,0,2,1,3,5]
.
Имейте в виду, что движения не в положение в (окончательном) отсортированном списке, а в отсортированном сегменте (выделенный жирным шрифтом раздел)
Тестовые случаи
[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]
выигрыш
Это код-гольф , поэтому выигрывает самый короткий ответ.