Amaç
Ekleme Sıralamasının sıralamak için yapacağı hareketlerden orijinal şifreli listeyi oluşturun . Orijinal listesinden tüm numaraları sahip olacak 0
kadar N-1
(dahil) N
girdi boyutudur.
Giriş
Listeyi sıralamak için gerekli hareketleri içeren bir liste. Her değer, orijinal (karıştırılmış) sayının doğru konumunda olması için yer değiştiren yuva miktarını temsil eder, bu işlemin soldan sağa olduğunu unutmayın. Giriş listesindeki
(0 dizinli) konumdaki değer i
arasında 0
ve i
kapsayıcı olacaktır.
Geçersiz girişleri işlemenize gerek yoktur, bu durumda herhangi bir davranış kabul edilebilir (çökme, sonsuz döngü, vb.).
Çıktı
Şifreli liste
Hareketleri oluşturmak için adım adım
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]
Yani, girdi [0,1,1,2,1,0]
için programınızın çıktı alması gerekir [4,0,2,1,3,5]
.
Hareketlerin (son) sıralı listedeki değil, sıralı segmentteki (kalın bölüm) konum olduğunu unutmayın.
Test Durumları
[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]
Kazanan
Bu kod golf , bu yüzden en kısa cevap kazanır.