Bu zorluğun amacı, seçili öğeleri bir listede toplamak ve bunları listede belirli bir konuma taşımaktır.
Görsel bir örnek olarak, giriş değerlerini (kara kutulu tamsayılarla temsil edilir) ve true öğesinin seçildiğini gösteren doğru değerler listesini alın (mavi kutularla temsil edilir, burada T
doğruluk ve F
sahtedir):
İlk mantıklı adım, doğrulukla işaretlenmiş olan öğeleri doğru olmayan listelere ayırmaktır. Her listedeki göreli sıralamanın sürdürülmesi gerektiğini unutmayın (örn. Seçilen öğelerin 1,4,5
sırası ve seçili olmayan öğelerin sırası olmalıdır 2,3,6,7
)!
İkinci mantıksal adım, seçili olmayan öğelerin geri kalan listesinde bir dizin verilir, seçilen tüm öğeleri belirtilen dizindeki öğeden önce ekleyin. Dizin oluşturmanın 0'da başladığını varsayarsak, seçimi dizin 3'e eklemek istediğinizi varsayalım. Bu, 7
kutunun önündeki noktaya karşılık gelir , bu nedenle seçili öğeler 7
.
Nihai çözüm o zaman 2,3,6,1,4,5,7
.
Bu mantıksal diyagramın bunun yapılabileceği bir yolu gösterdiğini unutmayın; çıktı her zaman aynı gözlemlenebilir sonucu ürettiği sürece programınızın aynı mantıksal adımları atmasına gerek yoktur.
Giriş
Programınıza 3 giriş verilir:
- Öğeleri temsil eden tamsayıların bir listesi. Bu boş bir liste olabilir. Bu liste her zaman benzersiz pozitif tamsayılardan oluşacaktır, sıralı sıraya göre değil (yani 5 listede iki kez olmayacaktır).
- Bir doğruluk değerinin aynı dizindeki öğenin seçildiğini temsil ettiği, öğeler listesiyle aynı uzunlukta doğruluk / falsy değerlerinin listesi.
- Seçimin nereye ekleneceğini gösteren bir tam sayı. Listenin ilk öğesinin dizininin, programınızın her çalışmasında sabit olduğu sürece seçebilirsiniz (örneğin, ilk öğe dizin 0 veya dizin 1 olabilir). Lütfen programınızın hangi kurala uyduğunu belirtin. Bu dizin aralıkta olmalıdır
[starting_idx, ending_idx+1]
, yani her zaman geçerli bir dizin olacaktır. Vaka diziniending_idx+1
için seçim listenin sonuna eklenmelidir. Bu tamsayının dilinizin yerel tamsayı türüne uygun olacağını varsayabilirsiniz.
Giriş istenen herhangi bir kaynaktan gelebilir (stdio, fonksiyon parametresi, vb.)
Çıktı
Çıktı, öğelerin son sırasını temsil eden bir listedir. Bu istenen herhangi bir kaynağa (stdio, dönüş değeri, fonksiyon çıkış parametresi, vb.) Olabilir. Herhangi bir girdiyi yerinde değiştirmenize izin verilir (örneğin, işlev parametresi olarak değiştirilebilen bir liste verilir ve işlevinizin bu listede yerinde çalışmasını sağlar).
Test senaryoları
Aşağıdaki test durumlarının tümü 0 tabanlı dizine ekleme olduğunu varsayar. Seçim maskesi için sırasıyla yanlış / doğruluk değerlerini belirtmek için 0 ve 1'i kullandım.
Test senaryoları [a,b,c]
, giriş listelerinizin sonlu sıralı bir sırayı temsil ettiği sürece listelerin biçimlendirilmiş olduğu görülür.
Giriş:
[]
[]
0
Çıktı:
[]
Giriş:
[1,2,3,4,5,6,7]
[1,0,0,1,1,0,0]
3
Çıktı:
[2,3,6,1,4,5,7]
Giriş:
[1,2,3,4,5,6,7]
[1,0,0,1,1,0,0]
0
Çıktı:
[1,4,5,2,3,6,7]
Giriş:
[1,2,3,4,5,6,7]
[1,0,0,1,1,0,0]
4
Çıktı:
[2,3,6,7,1,4,5]
Giriş:
[1,2,3,4,5,6,7]
[1,1,1,1,1,1,1]
0
Çıktı:
[1,2,3,4,5,6,7]
Giriş:
[1,2,3,4,5,6,7]
[0,0,0,0,0,0,0]
5
Çıktı:
[1,2,3,4,5,6,7]
Giriş:
[1,3,2,5,4,6]
[1,0,0,1,1,0]
3
Çıktı:
[3,2,6,1,5,4]
puanlama
Bu kod golf; baytlarda en kısa cevap kazanır. Standart boşluklar yasaktır. İstediğiniz yerleşikleri kullanma izniniz var.