Ada sungai dan ada serigala dan ayam di satu sisi sungai. Mereka memiliki rakit dan mereka semua harus ke sisi lain. Namun, rakit tidak dapat melakukan perjalanan sendiri. Rakit akan tenggelam jika ada lebih dari dua binatang di dalamnya. Tidak ada hewan yang mau basah karena sungai itu dingin dan kotor. Tidak ada hewan yang bisa melompat atau terbang di atas sungai. Juga, jika ada ayam di satu sisi, tidak mungkin ada lebih banyak serigala di sisi itu daripada ada ayam di sisi itu - serigala kemudian akan memutuskan untuk memakan ayam. Ini berarti bahwa Anda tidak dapat membawa dua serigala di rakit ke sisi dengan satu ayam.
Tugas Anda adalah membuat program / fungsi yang mengambil sejumlah serigala dan sejumlah ayam (lebih besar atau sama dengan jumlah serigala) sebagai input dan menemukan berapa kali rakit harus bergerak menyeberangi sungai. Jika tugas tidak memungkinkan, program / fungsi harus menampilkan / mengembalikan string kosong. Kemudian akan mencetak / mengembalikan satu metode tentang bagaimana hal ini dilakukan dengan cara berikut:
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
Seperti yang dapat Anda simpulkan, rakit akan secara otomatis bergerak ke arah yang bergantian (kiri dan kanan, mulai dari kiri ke kanan ketika satu atau dua hewan pertama menyeberangi sungai). Ini tidak perlu di-output / dikembalikan. 'W', 'C', 'CW', 'CC' atau 'WW' dalam output dapat dipisahkan oleh setidaknya satu dari yang berikut:
spaces (' ')
commas (',')
newlines
Atau, Anda dapat menyimpan arah sebagai item dalam daftar (daftar kosong berarti tidak ada solusi).
Test case (keluaran dipisahkan dengan koma - input berbentuk 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
Cobalah untuk membuat kode Anda sesingkat mungkin.