Es gibt einen Fluss und es gibt Wölfe und Hühner auf einer Seite des Flusses. Sie haben ein Floß und müssen alle auf die andere Seite. Das Floß kann jedoch nicht alleine fahren. Das Floß sinkt, wenn mehr als zwei Tiere darauf sind. Keines der Tiere möchte nass werden, weil der Fluss kalt und schmutzig ist. Keines der Tiere kann über den Fluss springen oder fliegen. Wenn sich auf einer Seite Hühner befinden, können sich auf dieser Seite nicht mehr Wölfe befinden als auf dieser Seite - die Wölfe entscheiden sich dann, die Hühner zu fressen. Dies bedeutet, dass Sie nicht zwei Wölfe auf dem Floß mit einem Huhn zur Seite stellen können.
Ihre Aufgabe ist es, ein Programm / eine Funktion zu erstellen, das / die eine Anzahl von Wölfen und eine Anzahl von Hühnern (größer oder gleich der Anzahl von Wölfen) als Eingabe verwendet und ermittelt, wie oft sich das Floß am wenigsten über den Fluss bewegen muss. Wenn die Aufgabe nicht möglich ist, sollte das Programm / die Funktion einen leeren String ausgeben / zurückgeben. Es wird dann eine Methode ausgegeben / zurückgegeben, wie dies auf folgende Weise erfolgt:
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
Wie Sie ableiten können, bewegt sich das Floß automatisch in wechselnde Richtungen (links und rechts, beginnend von links nach rechts, wenn die ersten ein oder zwei Tiere den Fluss überqueren). Dies muss nicht ausgegeben / zurückgegeben werden. 'W', 'C', 'CW', 'CC' oder 'WW' in der Ausgabe können durch mindestens eine der folgenden Angaben getrennt sein:
spaces (' ')
commas (',')
newlines
Alternativ können Sie die Anweisungen als Elemente in einer Liste speichern (eine leere Liste bedeutet keine Lösung).
Testfälle (Ausgabe durch Komma getrennt - Eingabe hat die Form 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
Versuchen Sie, Ihren Code so kurz wie möglich in Bytes zu halten.