Có một dòng sông và có một con sói và gà ở một bên bờ sông. Họ có một chiếc bè và tất cả họ cần phải sang bên kia. Tuy nhiên, chiếc bè không thể tự đi. Chiếc bè sẽ chìm nếu có nhiều hơn hai con vật trên đó. Không ai trong số các động vật muốn bị ướt vì dòng sông lạnh và bẩn. Không ai trong số các động vật có thể nhảy hoặc bay qua sông. Ngoài ra, nếu có một con gà ở một bên, không thể có nhiều con sói ở bên đó hơn những con gà ở bên đó - những con sói sau đó sẽ quyết định ăn thịt gà. Điều này có nghĩa là bạn không thể đưa hai con sói lên bè sang một bên với một con gà.
Nhiệm vụ của bạn là tạo ra một chương trình / chức năng lấy một số con sói và một số con gà (lớn hơn hoặc bằng số lượng con sói) làm đầu vào và tìm ra số lần nhỏ nhất mà bè phải di chuyển qua sông. Nếu tác vụ là không thể, chương trình / hàm sẽ xuất / trả về một chuỗi rỗng. Sau đó, nó sẽ in / trả về một phương thức như cách thực hiện theo cách sau:
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
Như bạn có thể suy luận, chiếc bè sẽ tự động di chuyển theo các hướng xen kẽ (trái và phải, bắt đầu từ trái sang phải khi một hoặc hai con vật đầu tiên băng qua sông). Điều này không cần phải xuất / trả lại. 'W', 'C', 'CW', 'CC' hoặc 'WW' trong đầu ra có thể được phân tách bằng ít nhất một trong các cách sau:
spaces (' ')
commas (',')
newlines
Ngoài ra, bạn có thể lưu trữ chỉ đường dưới dạng các mục trong danh sách (danh sách trống có nghĩa là không có giải pháp).
Các trường hợp thử nghiệm (đầu ra được phân tách bằng dấu phẩy - đầu vào có dạng 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
Cố gắng làm cho mã của bạn càng ngắn theo byte càng tốt.