Там есть река, а с одной стороны реки есть волки и куры. У них есть плот, и все они должны перейти на другую сторону. Однако плот не может путешествовать сам по себе. Плот затонет, если на нем более двух животных. Никто из животных не хочет промокнуть, потому что река холодная и грязная. Ни одно из животных не может прыгать или летать через реку. Кроме того, если на одной стороне есть цыплята, на этой стороне не может быть больше волков, чем на той стороне - волки решат съесть цыплят. Это означает, что вы не можете взять двух волков на плоту в сторону с одной курицей.
Ваша задача состоит в том, чтобы создать программу / функцию, которая принимает в качестве входных данных количество волков и кур (больше или равно количеству волков) и находит наименьшее число раз, когда плоту приходится перемещаться по реке. Если задача невозможна, программа / функция должна вывести / вернуть пустую строку. Затем он напечатает / вернет один метод, описывающий, как это делается следующим образом:
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
Как вы можете сделать вывод, плот автоматически будет двигаться в чередующихся направлениях (влево и вправо, начиная слева направо, когда первые одно или два животных пересекают реку). Это не нужно выводить / возвращать. «W», «C», «CW», «CC» или «WW» в выходных данных могут быть разделены хотя бы одним из следующих элементов:
spaces (' ')
commas (',')
newlines
Кроме того, вы можете сохранить направления как элементы в списке (пустой список означает отсутствие решения).
Тестовые случаи (выходные данные разделены запятыми - ввод принимает форму 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
Попробуйте сделать свой код максимально коротким в байтах.