Hay un río y hay lobos y gallinas a un lado del río. Tienen una balsa y todos necesitan llegar al otro lado. Sin embargo, la balsa no puede viajar sola. La balsa se hundirá si hay más de dos animales en ella. Ninguno de los animales quiere mojarse porque el río está frío y sucio. Ninguno de los animales puede saltar o volar sobre el río. Además, si hay pollos en un lado, no puede haber más lobos en ese lado que pollos en ese lado: los lobos decidirán comerlos. Esto significa que no puedes llevar a dos lobos en la balsa a un lado con un pollo.
Su tarea es hacer un programa / función que tome una cantidad de lobos y una cantidad de pollos (mayor o igual que la cantidad de lobos) como entrada y encuentre la menor cantidad de veces que la balsa tiene que moverse a través del río. Si la tarea no es posible, el programa / función debería generar / devolver una cadena vacía. Luego imprimirá / devolverá un método sobre cómo se hace de la siguiente manera:
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 puede deducir, la balsa se moverá automáticamente en direcciones alternas (izquierda y derecha, comenzando de izquierda a derecha cuando el primero o dos animales crucen el río). Esto no necesita ser enviado / devuelto. 'W', 'C', 'CW', 'CC' o 'WW' en la salida pueden estar separados por al menos uno de los siguientes:
spaces (' ')
commas (',')
newlines
Alternativamente, puede almacenar las instrucciones como elementos en una lista (una lista vacía significa que no hay solución).
Casos de prueba (salida separada por comas - la entrada toma la forma 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
Intenta hacer que tu código sea lo más corto posible en bytes.