Mancala , genellikle oyuncuların manipüle ettiği boncuklarla dolu bir dizi bardak içeren bir masa oyunları ailesinin adıdır. Bu meydan okuma, oyunun bir solitaire varyantı için belirlenmiş belirli bir kural kullanacaktır.
Tahta bir ucunda bir "sepet" ve ardından 1'den başlayarak numaralandırılmış sonsuz sayıda bardaktan oluşur. Bazı fincanların içinde bir miktar boncuk bulunur. Eğer n
inci bardağın içinde tam olarak n
boncuklar varsa, ondan "boncuk" ekebilirsiniz. Ekim, tüm n
boncukları fincandan çıkarmak, daha sonra her fincanda birer birer sepete doğru biriktirmek anlamına gelir . Son boncuk sepete girecek. Karttaki tüm boncuklar sepette olduğunda oyuncu kazanır.
Açıkçası, kazanamayan birçok tahta var, örneğin ikinci fincanda tam olarak bir boncuk varsa. Hiçbir yasal oyun yoktur, çünkü 0 boncuklu tüm fincanlara ekilemez ve ikinci fincanda ekilecek yeterli boncuk yoktur. Bu kesinlikle eğlenceli değil, bu yüzden göreviniz kazanılabilir panoları oluşturmak olacak.
Görev
Birkaç taneyi temsil eden pozitif bir tamsayı verildiğinde, yukarıda tarif edildiği gibi kazanılabilir bir tahta yapmak için her bir kaba konulması gereken tanelerin sayısını temsil eden negatif olmayan tamsayıların bir listesi çıkarılır. Bu liste herhangi bir sıfır içermemelidir.
Herhangi bir sayıda boncuk için, her zaman tam olarak bir kazanılabilir tahta konfigürasyonu vardır.
gösteri
Bu kazanılabilir tahtanın nasıl oynanacağının ve 4 girişinin bir göstergesidir. Kazanılabilir tahta [0, 1, 3]
. Eldeki tek hamle ile başlıyoruz, elde etmek için üçüncü fincandan boncuklar ekiyoruz [1, 2, 0]
. Şimdi biz aslında bir seçim var, ama sadece doğru bir alma, ilk fincan ekim edilir: [0, 2, 0]
. Sonra ikinci bardağı ekiyoruz [1, 0, 0]
ve nihayet tüm boş bardakları almak için ilk bardağı ekiyoruz.
Test senaryoları:
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
Test örnekleri oluşturmak için bir program hazırladığı için PeterTaylor'a çok teşekkürler !