Zielsetzung
Generieren Sie die ursprüngliche verschlüsselte Liste aus den Bewegungen, die eine Einfügungssortierung ausführen würde, um sie zu sortieren. Die ursprüngliche Liste enthält alle Zahlen von 0
bis N-1
(einschließlich), wobei N
die Größe der Eingabe ist.
Eingang
Eine Liste mit den erforderlichen Schritten zum Sortieren der Liste. Jeder Wert stellt die Anzahl der Slots dar, die um die ursprüngliche (verschlüsselte) Nummer verschoben wurden, um sich an der richtigen Position zu befinden. Beachten Sie, dass dieser Vorgang von links nach rechts verläuft.
Der Wert an der (0-indizierten) Position i
in der Eingabeliste liegt zwischen 0
und i
einschließlich.
Sie müssen keine ungültigen Eingaben verarbeiten. In diesem Fall ist jedes Verhalten akzeptabel (Absturz, Endlosschleife usw.).
Ausgabe
Die verschlüsselte Liste
Schritt für Schritt, um die Züge zu generieren
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]
Also, für die Eingabe muss [0,1,1,2,1,0]
Ihr Programm ausgeben [4,0,2,1,3,5]
.
Beachten Sie, dass sich die Bewegungen nicht an der Position in der (endgültigen) sortierten Liste befinden, sondern im sortierten Segment (fettgedruckter Abschnitt).
Testfälle
[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]
Gewinnen
Das ist Code-Golf , also gewinnt die kürzeste Antwort.