Jest rzeka i wilki i kury po jednej stronie rzeki. Mają tratwę i wszyscy muszą przejść na drugą stronę. Tratwa nie może jednak samodzielnie podróżować. Tratwa zatonie, jeśli będzie na niej więcej niż dwa zwierzęta. Żadne ze zwierząt nie chce się zmoczyć, ponieważ rzeka jest zimna i brudna. Żadne ze zwierząt nie może skakać ani latać nad rzeką. Ponadto, jeśli kurczaki są po jednej stronie, po tej stronie nie może być więcej wilków niż kurczaków po tej stronie - wówczas wilki zdecydują się je zjeść. Oznacza to, że nie możesz wziąć dwóch wilków na tratwie na bok z jednym kurczakiem.
Twoim zadaniem jest stworzenie programu / funkcji, która pobierze liczbę wilków i kurczaków (większą lub równą liczbie wilków) jako dane wejściowe i znajdzie najmniejszą liczbę ruchów tratwy przez rzekę. Jeśli zadanie nie jest możliwe, program / funkcja powinna wypisać / zwrócić pusty ciąg znaków. Następnie wydrukuje / zwróci jedną metodę, jak to zrobić:
W if a wolf crosses the river on its own
C if a chicken crosses the river on its own
CW if a chicken and a wolf cross the river -- WC is also fine
CC if two chickens cross the river
WW if two wolves cross the river
Jak można wywnioskować, tratwa automatycznie przesunie się w naprzemiennych kierunkach (w lewo iw prawo, zaczynając od lewej do prawej, gdy pierwsze lub dwa zwierzęta przekroczą rzekę). To nie musi być wysyłane / zwracane. „W”, „C”, „CW”, „CC” lub „WW” na wyjściu można oddzielić co najmniej jednym z poniższych:
spaces (' ')
commas (',')
newlines
Alternatywnie możesz przechowywać wskazówki jako pozycje na liście (pusta lista oznacza brak rozwiązania).
Przypadki testowe (dane wyjściowe oddzielone przecinkami - dane wejściowe mają postać wolves,chickens
):
1,1 -> CW
2,2 -> CW,C,CC,C,CW
1,2 -> CW,W,CW
0,10 -> CC,C,CC,C,CC,C,CC,C,CC,C,CC,C,CC,C,CC,C,CC
3,2 -> no solution
Staraj się, aby Twój kod był jak najkrótszy.