placeAt
Negatif olmayan bir tamsayı dizisi ve negatif olmayan bir tamsayı olan bir dizin alan bir işlev (örneğin ) yazın . Verilen indekse 1 koymalı, muhtemelen o noktayı boşaltmak için diğer girişleri bir noktaya kaydırmalı, 0'lar boş noktalar için duruyor.
- İstenen dizindeki giriş 0 ise, 1 ile doldurun.
- Aksi takdirde, dizinin solunda en yakın 0 değerini bulun. Yer açmak için girişleri bir nokta sola 0 kaydırın, ardından dizini 1 ile doldurun.
- Solda 0 yoksa, aynı işlemi sağa doğru yapın.
- İkisi de mümkün değilse (yani 0 yoksa), diziyi değiştirmeden döndürün.
Öğeler 0 dizinlidir. İşlev adı istediğiniz herhangi bir şey olabilir.
Örnekler:
(Harfler pozitif tamsayı değerlerini ifade eder.)
[a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, c, d, 0] place 2 is 0, just fill
[a, b, 0, c, d, 0] placeAt 3 // output [a, b, c, 1, d, 0] place 3 is filled, shift items left
[a, b, 0, c, d, 0] placeAt 0 // output [1, a, b, c, d, 0] place 0 is filled, can't shift left, shift items right
[a, b, 0, c, d, 0] placeAt 1 // output [a, 1, b, c, d, 0] place 1 is filled, can't shift left, shift items right
[0, a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, 0, c, d, 0] place 2 is filled, shift items left
[0, a, b, 0, c, d, 0] placeAt 4 // output [0, a, b, c, 1, d, 0] place 4 is filled, shift items left (notice you keep shifting up until a 0)
[0, 2, 0, 2] placeAt 3 // output [0, 2, 2, 1] place 3 is filled, shift items left
Bu bir kod golf meydan okumadır. 9 günün sonunda en kısa katılım kazanır.
[0, 2, 0, 2] placeAt 3
çıktı almak yasal [2, 0, 2, 1]
mı? Kodun aslında bir işlev olması için gerekli placeAt
mi? Bazı dillerin tam olarak işlevleri olmadığını unutmayın. "Bir istisna atın" bazı diller için geçerli olmayabilir; Hata gösteren bir çıktıya izin vermenizi öneririm.
[2, 0, 2, 1]
yasal bir çıktı değildir, çünkü her zaman mümkün olduğunca az sayıda öğeyi kaydırmanız gerekir ve işlevi istediğiniz gibi adlandırabilirsiniz.
0
?