Anda adalah pahlawan terbaik dan paling terkenal di daerah tersebut. Akhir-akhir ini ada desas-desus bahwa seekor Hydra telah nongkrong di jurang terdekat. Menjadi pahlawan pemberani dan berbudi luhur bahwa Anda adalah Anda akan pergi memeriksanya nanti hari ini.
Masalah dengan hydrae adalah bahwa setiap kali Anda mencoba memotong kepala mereka, beberapa yang baru tumbuh kembali. Beruntung bagi Anda, Anda memiliki pedang yang dapat memotong beberapa kepala sekaligus. Tapi ada yang menangkap, jika hydra memiliki kepala lebih sedikit daripada pedangmu, kamu tidak akan bisa menyerang hydra. Ketika hydra memiliki nol kepala, Anda telah membunuhnya.
Ada juga pedang khusus yang disebut The Bisector yang akan memotong setengah kepala Hydra, tetapi hanya jika jumlah kepala genap. Bisector tidak dapat digunakan sama sekali ketika jumlah kepala ganjil. Ini berbeda dari memotong nol kepala.
Jadi Anda telah memutuskan Anda akan menulis sebuah program komputer untuk mencari cara terbaik untuk membunuh hydra.
Tugas
Anda akan diberikan sebagai input
- jumlah kepala Hydra dimulai dengan
- jumlah kepala Hydra yang tumbuh kembali setiap belokan
- daftar pedang yang tersedia untuk digunakan masing-masing (masing-masing adalah bisector atau memotong sejumlah kepala tetap setiap belokan)
Anda harus menampilkan daftar gerakan yang akan membunuh hydra dalam jumlah putaran paling sedikit. Jika tidak ada cara untuk membunuh hydra, Anda harus menampilkan beberapa nilai lain yang menunjukkan demikian (dan daftar kosong tidak masalah jika bahasa Anda diketik dengan kuat). Jika ada beberapa cara optimal untuk membunuh hydra, Anda dapat mengeluarkan salah satu dari mereka atau semuanya.
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Uji Kasus
Lebih banyak tersedia berdasarkan permintaan
5 heads, 9 each turn, [-1,-2,-5] -> [-5]
12 heads, 1 each turn, [/2,-1] -> No solution
8 heads, 2 each turn, [-9, -1] -> [-1,-9]
3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26]
16 heads, 1 each turn, [/2, 4, 2] -> [/2,-4,/2,-4]
Pertanyaan ini adalah versi sederhana dari mekanik utama HydraSlayer . Jika Anda menyukai jenis teka-teki ini, saya sarankan memeriksanya, cukup menyenangkan. Saya tidak memiliki afiliasi dengan permainan.
[/2, -2, /2, -2, -4]
juga berfungsi.Jawaban:
JavaScript,
230223 byteVersi tidak disatukan:
Uskup diwakili sebagai
0
.sumber