Об'єктивна
Створіть оригінальний скремблірований список із рухів, які зробив би сортування вставки для його сортування. У вихідному списку будуть всі цифри від 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]
Перемога
Це код-гольф , тому найкоротша відповідь виграє.