Ini adalah "rekanan" dari teka-teki lain, Delapan koin untuk raja yang adil di Puzzling.SE.
Anda dapat membaca puzzle di atas sebagai latar belakang. Rincian tentang teka-teki ini adalah sebagai berikut.
Seperangkat 8 jenis koin dengan nilai berbeda dibuat, raja ingin Anda mengetahui N maksimum sehingga sejumlah harga dari 0 hingga N dapat dibayarkan dengan kombinasi tidak lebih dari 8 koin dan tanpa biaya.
Misalnya, (diambil dari jawaban Glorfindel). Jika satu set koin nilai 1, 2, 5, 13, 34, 89, 233, 610 diberikan, program Anda harus menghasilkan 1596, karena setiap angka antara 0 dan 1596 (inklusif) dapat diwakili dengan jumlah tidak lebih dari 8 angka dari daftar yang diberikan (angka dapat diulang), sementara 1597 tidak dapat direpresentasikan dengan cara itu.
Secara matematis, jika input adalah himpunan S yang terdiri dari 8 bilangan bulat positif, output N yang diinginkan memuaskan bahwa untuk setiap bilangan n antara 0 dan N, terdapat x1, x2, x3, ..., x8 sedemikian rupa sehingga
Tujuan Anda adalah menulis program, fungsi, atau cuplikan yang menggunakan 8 angka sebagai input, dan menghasilkan maksimum N seperti dijelaskan di atas.
Aturan:
- I / O fleksibel diizinkan, sehingga program Anda dapat mengambil input dalam bentuk apa pun yang paling cocok. Anda dapat berasumsi bahwa angka-angka input diurutkan dengan cara yang paling sesuai dengan program Anda.
- Harap sebutkan dalam jawaban Anda jika program Anda bergantung pada urutan input
- Input adalah satu set 8 bilangan bulat positif yang berbeda (tanpa nol). Outputnya adalah satu bilangan bulat non-negatif.
- Dalam hal tidak ada 1 dalam set input, program Anda harus menampilkan 0 karena angka dari 0 hingga 0 memenuhi persyaratan.
- Dalam hal input tidak valid (set berisi angka nol, negatif atau duplikat), program Anda dapat melakukan apa saja.
- Celah standar dilarang.
- Program Anda akan berjalan dalam beberapa menit di komputer modern.
Kasus uji (sebagian besar diambil dari jawaban di bawah pertanyaan terkait tentang membingungkan):
[1, 2, 3, 4, 5, 6, 7, 8] => 64
[2, 3, 4, 5, 6, 7, 8, 9] => 0
[1, 3, 4, 5, 6, 7, 8, 9] => 72
[1, 2, 5, 13, 34, 89, 233, 610] => 1596
[1, 5, 16, 51, 130, 332, 471, 1082] => 2721
[1, 6, 20, 75, 175, 474, 756, 785] => 3356
Ini adalah kode-golf , jadi program atau cuplikan terpendek di setiap bahasa menang!