C'è un fiume e ci sono lupi e galline su un lato del fiume. Hanno una zattera e devono tutti arrivare dall'altra parte. Tuttavia, la zattera non può viaggiare da sola. La zattera affonderà se ci sono più di due animali. Nessuno degli animali vuole bagnarsi perché il fiume è freddo e sporco. Nessuno degli animali può saltare o volare sopra il fiume. Inoltre, se ci sono polli da una parte, non ci possono essere più lupi da quella parte di quelli da quella parte - i lupi decideranno quindi di mangiare le galline. Ciò significa che non puoi portare due lupi sulla zattera da un lato con un pollo.
Il tuo compito è creare un programma / funzione che impieghi un numero di lupi e un numero di polli (maggiore o uguale al numero di lupi) come input e trova il minor numero di volte in cui la zattera deve muoversi attraverso il fiume. Se l'attività non è possibile, il programma / funzione dovrebbe generare / restituire una stringa vuota. Quindi stamperà / restituirà un metodo su come farlo nel modo seguente:
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
Come puoi dedurre, la zattera si sposterà automaticamente in direzioni alternate (sinistra e destra, a partire da sinistra a destra quando i primi uno o due animali attraversano il fiume). Questo non deve essere emesso / restituito. 'W', 'C', 'CW', 'CC' o 'WW' nell'output possono essere separati da almeno uno dei seguenti:
spaces (' ')
commas (',')
newlines
In alternativa, è possibile memorizzare le indicazioni come elementi in un elenco (un elenco vuoto significa nessuna soluzione).
Casi di test (output separato da virgole - l'input assume 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
Cerca di rendere il tuo codice il più breve possibile in byte.