Há um rio e há lobos e galinhas de um lado do rio. Eles têm uma balsa e todos precisam chegar ao outro lado. No entanto, a balsa não pode viajar por conta própria. A jangada afundará se houver mais de dois animais. Nenhum dos animais quer se molhar porque o rio está frio e sujo. Nenhum dos animais pode pular ou voar sobre o rio. Além disso, se houver galinhas de um lado, não poderá haver mais lobos naquele lado do que galinhas desse lado - os lobos decidirão comer as galinhas. Isso significa que você não pode levar dois lobos na balsa para um lado com uma galinha.
Sua tarefa é criar um programa / função que leve um número de lobos e um número de galinhas (maior ou igual ao número de lobos) como entrada e encontre o menor número de vezes que a jangada precisa se mover através do rio. Se a tarefa não for possível, o programa / função deve gerar / retornar uma string vazia. Em seguida, ele imprimirá / retornará um método de como isso é feito da seguinte maneira:
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
Como você pode deduzir, a balsa se moverá automaticamente em direções alternadas (esquerda e direita, começando da esquerda para a direita quando o primeiro ou dois animais cruzarem o rio). Isso não precisa ser gerado / retornado. 'W', 'C', 'CW', 'CC' ou 'WW' na saída podem ser separados por pelo menos um dos seguintes:
spaces (' ')
commas (',')
newlines
Como alternativa, você pode armazenar as instruções como itens em uma lista (uma lista vazia significa que não há solução).
Casos de teste (saída separada por vírgulas - a entrada assume o formato 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
Tente tornar seu código o mais curto possível em bytes.