Motivasyon : Bazen listedeki bazı öğeler toplamlarınıza dahil edilmez. Örneğin, bebeklerin bir ebeveynin kucaklarında oturduğu sıradaki uçak yolcularını saymak.
Zorluk : bir öğe listesini parçalar halinde bölmek için bir program yazın. (Muhtemelen son hariç) her bir yığın, aynı olan boyutu , boyut öncül fonksiyonu geçen madde sayısı olarak tanımlanır.
Kurallar :
- Programınız
- bir öğe listesi
- pozitif tamsayı yığın boyutu
- yüklem işlevi (bir öğe alır ve doğru veya yanlış döndürür)
- Giriş listesini parçalara ayrılmış olarak döndürmelisiniz
- Her yığın bir öğe listesidir
- Genel olarak, ürünler aynı sırada kalmalı, hiçbiri göz ardı edilmemelidir
- Her bir öbekte yüklemi geçen öğe sayısı (muhtemelen sonuncusu hariç) girdi öbeği boyutuyla eşleşmelidir.
- yüklemi geçmeyen öğeler bu boyuta dahil edilmemelidir
- Yüklemi başarısız olan öğeler
- hala çıktı yığınlarına dahil
- bir parçanın "dolu" olması durumunda, ancak sonraki öğeler yüklemi başarısız olan öğelerdir.
- bu nedenle son yığın sadece yüklemi başarısız olan maddelerden oluşmayabilir
- Tüm parçalar muhasebeleştirildiği için, son yığın yığın boyutundan daha küçük olabilir .
Kapsamlı olmayan örnekler:
En basit örnek, yüklem işlevinin bulunduğu 1
s ve 0
s'yi dikkate almaktır x ==> x > 0
. Bu durumda, sum
her bir yığının yığın boyutuyla eşleşmesi gerekir.
- öğeler:,
[]
boyut:,2
yüklem:x > 0
-> ya[]
veya[[]]
- ürün:,
[0, 0, 0, 0, 0, 0]
boyut:,2
yüklem:x > 0
->[[0, 0, 0, 0, 0, 0]]
- ürün:,
[0, 1, 1, 0]
boyut:,2
yüklem:x > 0
->[[0, 1, 1, 0]]
- ürün:,
[0, 1, 1, 0, 1, 0, 0]
boyut:,2
yüklem:x > 0
->[[0, 1, 1, 0], [1, 0, 0]]
- ürün:,
[0, 1, 0, 0, 1, 0, 1, 1, 0]
boyut:,2
yüklem:x > 0
->[[0, 1, 0, 0, 1, 0], [1, 1, 0]]
Ve bebeklerin bir ebeveynin kucak örneğinde oturduğu uçak yolcuları ile bitirelim . A
yetişkin için, b
bebek için, uçak sırası 3
geniş koltuklar, yetişkin her zaman bebeklerinden önce listelenir:
- ürün:,
[A, b, A, b, A, A, A, b, A, b, A, A, b]
boyut:,3
yüklem:x => x == A
->[[A, b, A, b, A], [A, A, b, A, b], [A, A, b]]