Cel
Wygeneruj oryginalną zaszyfrowaną listę na podstawie ruchów, które wykonałby Sortowanie wstawiania , aby ją posortować. Oryginalna lista będzie zawierać wszystkie liczby od 0
do N-1
(włącznie), gdzie N
jest rozmiar danych wejściowych.
Wejście
Lista zawierająca niezbędne ruchy do posortowania listy. Każda wartość reprezentuje liczbę miejsc przesuniętych przez pierwotną (zaszyfrowaną) liczbę, aby znalazły się na swojej właściwej pozycji, pamiętaj, że ten proces odbywa się od lewej do prawej.
Wartość w pozycji (indeksowanej 0) i
na liście danych wejściowych będzie pomiędzy 0
i i
włącznie.
Nie musisz obsługiwać nieprawidłowych danych wejściowych, w tym przypadku dopuszczalne jest dowolne zachowanie (awaria, nieskończona pętla itp.).
Wynik
Zakodowana lista
Krok po kroku, aby wygenerować ruchy
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]
Tak więc dla danych wejściowych [0,1,1,2,1,0]
twój program musi generować dane wyjściowe [4,0,2,1,3,5]
.
Pamiętaj, że ruchy nie są w pozycji na (końcowej) posortowanej liście, ale w posortowanym segmencie (pogrubiona sekcja)
Przypadki testowe
[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]
Zwycięski
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź.