Mancala to nazwa rodziny gier planszowych, które zwykle obejmują serię kubków wypełnionych koralikami, którymi manipulują gracze. W tym wyzwaniu zostanie zastosowany określony zestaw reguł dla wariantu pasjansa.
Plansza składa się z „kosza” na jednym końcu, po którym znajduje się nieskończona liczba filiżanek, ponumerowanych od 1. Niektóre kubki będą miały w sobie pewną liczbę koralików. Jeśli n
puchar zawiera dokładnie n
koraliki, możesz „wysiać” z nich koraliki. Siew oznacza n
wyjęcie wszystkich koralików z kubka, a następnie umieszczenie ich pojedynczo w każdej filiżance w kierunku kosza. Ostatni koralik trafi do koszyka. Gracz wygrywa, gdy wszystkie kulki na planszy są w koszu.
Oczywiście istnieje wiele desek, których nie można wygrać, na przykład jeśli w drugim pucharze znajduje się dokładnie jeden koralik. Nie ma legalnej gry, ponieważ nie można zasiać wszystkich filiżanek z 0 koralikami, a drugi puchar nie ma wystarczającej ilości koralików do wysiewu. To oczywiście nie jest fajne, więc Twoim zadaniem będzie stworzenie zwycięskich plansz.
Zadanie
Biorąc pod uwagę dodatnią liczbę całkowitą reprezentującą liczbę wyjściowych kulek, lista nieujemnych liczb całkowitych reprezentujących liczbę kulek, które należy umieścić w każdej filiżance, aby uzyskać zwycięską planszę, jak opisano powyżej. Ta lista nie powinna zawierać żadnych zer końcowych.
Dla dowolnej liczby paciorków zawsze istnieje dokładnie jedna konfigurowalna plansza do wygrania.
Demonstracja
Jest to demonstracja sposobu gry na planszy do wygrania i wkład 4. Planszą do wygrania jest [0, 1, 3]
. Zaczynamy od jedynego dostępnego ruchu, wysiewając koraliki z trzeciego kubka, aby je zdobyć [1, 2, 0]
. Teraz rzeczywiście mają wyboru, ale tylko jeden jest prawidłowy siewu pierwszego kielicha, uzyskanie: [0, 2, 0]
. Następnie zasiewamy drugi kubek, poddając się, [1, 0, 0]
i wreszcie siemy pierwszy kubek, aby uzyskać wszystkie puste kubki.
Przypadki testowe:
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]
Ogromne podziękowania dla PeterTaylor za opracowanie programu do generowania przypadków testowych!