Bir nehir var ve nehrin bir tarafında kurtlar ve tavuklar var. Bir salları var ve hepsinin diğer tarafa gitmesi gerekiyor. Bununla birlikte, sal kendi başına seyahat edemez. Sal, ikiden fazla hayvan varsa, batar. Nehrin soğuk ve kirli olması nedeniyle hiçbir hayvan ıslanmak istemiyor. Hiçbir hayvan nehrin üzerinden atlayamaz veya uçamaz. Ayrıca, bir tarafta tavuk varsa, o tarafta tavuklardan daha fazla kurt olamaz - kurtlar daha sonra tavukları yemeye karar verecektir. Bu, salda iki kurdu bir tavukla bir tarafa alamayacağınız anlamına gelir.
Göreviniz girdi olarak birkaç kurt ve birkaç tavuk (kurt sayısına eşit veya daha fazla) alan ve salın nehir boyunca hareket etmesinin en az sayısını bulan bir program / işlev yapmaktır. Görev mümkün değilse, program / işlev boş bir dize çıktısı almalı / döndürmelidir. Daha sonra bunun nasıl yapıldığına ilişkin bir yöntemi aşağıdaki şekilde yazdırır / döndürür:
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
Çıkarabileceğiniz gibi, sal otomatik olarak alternatif yönlerde hareket edecektir (sol ve sağ, ilk bir veya iki hayvan nehri geçtikçe soldan sağa doğru). Bunun çıktısı / iadesi gerekmez. Çıktıdaki 'W', 'C', 'CW', 'CC' veya 'WW' aşağıdakilerden en az biri ile ayrılabilir:
spaces (' ')
commas (',')
newlines
Alternatif olarak, yönergeleri bir listede öğe olarak saklayabilirsiniz (boş bir liste çözüm olmadığı anlamına gelir).
Test senaryoları (çıktılar virgülle ayrılmış - girdi biçimi alır 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
Kodunuzu mümkün olduğunca bayt cinsinden kısaltmaya çalışın.