Đây là một "bản sao" của một câu đố khác, Tám đồng xu cho vị vua công bằng trên Puzzling.SE.
Bạn có thể đọc các câu đố trên cho nền. Các chi tiết về câu đố này như sau.
Một bộ gồm 8 loại tiền có giá trị khác nhau được tạo ra, nhà vua muốn bạn tìm ra N tối đa sao cho bất kỳ số giá nào từ 0 đến N có thể được thanh toán với sự kết hợp không quá 8 đồng và không tính phí.
Ví dụ: (lấy từ câu trả lời của Glorfindel). Nếu một tập hợp các đồng tiền có giá trị 1, 2, 5, 13, 34, 89, 233, 610 được đưa ra, chương trình của bạn sẽ xuất ra 1596, bởi vì mọi số từ 0 đến 1596 (đã bao gồm) có thể được biểu thị bằng tổng không quá hơn 8 số từ danh sách đã cho (số có thể lặp lại), trong khi 1597 không thể được biểu diễn theo cách đó.
Theo cách toán học, nếu đầu vào là tập S bao gồm 8 số nguyên dương, thì đầu ra N mong muốn thỏa mãn rằng với bất kỳ số n nào trong khoảng từ 0 đến N, tồn tại x1, x2, x3, ..., x8 sao cho
Mục tiêu của bạn là viết một chương trình, hàm hoặc đoạn trích lấy 8 số làm đầu vào và xuất N tối đa như mô tả ở trên.
Quy tắc:
- I / O linh hoạt được phép, vì vậy chương trình của bạn có thể lấy đầu vào dưới mọi hình thức phù hợp nhất. Bạn có thể cho rằng các số đầu vào được sắp xếp theo cách phù hợp nhất với chương trình của bạn.
- Vui lòng nêu nó trong câu trả lời của bạn nếu chương trình của bạn phụ thuộc vào thứ tự đầu vào
- Đầu vào là một bộ gồm 8 số nguyên dương khác nhau (không có số không). Đầu ra là một số nguyên không âm.
- Trong trường hợp không có 1 trong tập đầu vào, chương trình của bạn sẽ xuất 0 vì bất kỳ số nào từ 0 đến 0 đều thỏa mãn yêu cầu.
- Trong trường hợp đầu vào không hợp lệ (bộ chứa số 0, số âm hoặc số trùng lặp), chương trình của bạn có thể làm bất cứ điều gì.
- Sơ hở tiêu chuẩn bị cấm.
- Chương trình của bạn sẽ chạy trong vòng vài phút trên một máy tính hiện đại.
Các trường hợp thử nghiệm (chủ yếu được lấy từ các câu trả lời dưới câu hỏi được liên kết trên Puzzling):
[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
Đây là một môn đánh gôn , vì vậy chương trình hoặc đoạn ngắn nhất trong mỗi ngôn ngữ sẽ thắng!