Giriş
Diyelim ki bir sayılar listesinin kuyruk maksima'sını, yani her boş olmayan son ekin maksimumunu hesaplamak istediğinizi varsayalım. Bunu yapmanın bir yolu, tekrar tekrar bir numara seçip, daha sonra mümkün olmadıkça, daha sonra gelen daha yüksek bir sayı ile değiştirmektir. Bu zorlukta, göreviniz bu algoritmanın bir adımını gerçekleştirmektir.
Görev
Girişiniz , boş olabilen L tamsayılarının bir listesidir . Çıktınız liste olacaktır L tam olarak bir numara L i başka almıştır L j , L i <L j ve i <j .
Başka bir deyişle, bir sayıdan sonra gelen daha yüksek sayı ile değiştirmelisiniz.
İ ve j'yi tüm geçerli çiftler arasında özgürce seçebilir ve seçim özgün olamaz.
Eğer böyle bir i ve j yoksa (yani L artmaz), çıktınız L değişmeyecektir.
Örnek
L = [3, 1, 4, -1, 2] girişini dikkate alın . Muhtemel işlem yerine vardır 3 ile 4 yerine, 1 ile 4 , yerine 1 ile 2 ya da yerine -1 ile 2 . Böylece olası çıktılar:
[ 3 , 1 , 4 , -1 , 2 ]
------------------------------
[( 4), 1 ,( 4), -1 , 2 ]
[ 3 ,( 4),( 4), -1 , 2 ]
[ 3 ,( 2), 4 , -1 ,( 2)]
[ 3 , 1 , 4 ,( 2),( 2)]
İşlemi yeterince tekrarlarsanız, sonuç , tam olarak L' nin kuyruk maksimumunun listesi olan [4,4,4,2,2] olacaktır .
Kurallar ve puanlama
Tam bir program veya bir fonksiyon yazabilirsiniz. İkinci durumda, eğer diliniz buna izin veriyorsa, yeni bir dizi döndürmek yerine girişi yerinde değiştirebilirsiniz. Giriş ve çıkış biçimleri nedensel olarak esnektir.
En düşük bayt sayısı kazanır.
Test durumları
Tüm olası çıkışlar gösterilmektedir.
[] -> []
[1] -> [1]
[1,2] -> [2,2]
[2,1] -> [2,1]
[4,4,4,4] -> [4,4,4,4]
[-1,-3,-10] -> [-1,-3,-10]
[1,3,10] -> [3,3,10] [10,3,10] [1,10,10]
[1,1,2,1] -> [2,1,2,1] [1,2,2,1]
[998,64,2,-94,-789] -> [998,64,2,-94,-789]
[998,2,64,-94,-789] -> [998,64,64,-94,-789]
[3,1,4,-1,2] -> [4,1,4,-1,2] [3,4,4,-1,2] [3,2,4,-1,2] [3,1,4,2,2]
[-1,4,0,4,7,2,3] -> [4,4,0,4,7,2,3] [0,4,0,4,7,2,3] [-1,4,4,4,7,2,3] [7,4,0,4,7,2,3] [-1,7,0,4,7,2,3] [-1,4,7,4,7,2,3] [-1,4,0,7,7,2,3] [2,4,0,4,7,2,3] [-1,4,2,4,7,2,3] [3,4,0,4,7,2,3] [-1,4,3,4,7,2,3] [-1,4,0,4,7,3,3]
[3542,-12311,7662,1672,6081] -> [7662,-12311,7662,1672,6081] [3542,7662,7662,1672,6081] [3542,1672,7662,1672,6081] [6081,-12311,7662,1672,6081] [3542,6081,7662,1672,6081] [3542,-12311,7662,6081,6081]
x=>x.map(c=>c<x[++i]&!d?x[d=i]:c,d=i=0)
?