Это «аналог» другой головоломки, Восемь монет для честного короля на Puzzling.SE.
Вы можете прочитать вышеупомянутую загадку для фона. Детали этой загадки следующие.
Создается набор из 8 видов монет различного достоинства. Король хочет, чтобы вы выяснили максимальное значение N, так что любое количество цен от 0 до N можно заплатить комбинацией не более 8 монет и без начислений.
Например, (взято из ответа Глорфинделя). Если дан набор монет со значениями 1, 2, 5, 13, 34, 89, 233, 610, ваша программа должна вывести 1596, потому что каждое число от 0 до 1596 (включительно) может быть представлено суммой не более чем 8 чисел из данного списка (числа могут повторяться), в то время как 1597 не могут быть представлены таким образом.
Математически, если входной сигнал представляет собой набор S, состоящий из 8 натуральных чисел, требуемый выходной сигнал N удовлетворяет тому, что для любого числа n от 0 до N существует x1, x2, x3, ..., x8, такие что
Ваша цель состоит в том, чтобы написать программу, функцию или фрагмент, который принимает 8 чисел в качестве входных данных и выводит максимальное число N, как описано выше.
Правила:
- Разрешен гибкий ввод / вывод, поэтому ваша программа может принимать ввод в любой форме, которая лучше всего подходит. Вы можете предположить, что введенные числа отсортированы так, как лучше всего подходит для вашей программы.
- Пожалуйста, укажите это в своем ответе, если ваша программа зависит от порядка ввода
- Входные данные представляют собой набор из 8 различных положительных целых чисел (без нулей). На выходе получается одно неотрицательное целое число.
- Если во входном наборе нет 1, ваша программа должна вывести 0, потому что любое число от 0 до 0 удовлетворяет требованию.
- В случае неверного ввода (набор содержит ноль, отрицательные или повторяющиеся числа), ваша программа может делать все что угодно.
- Стандартные лазейки запрещены.
- Ваша программа должна работать в течение нескольких минут на современном компьютере.
Тестовые случаи (в основном взяты из ответов в связанном вопросе о головоломках):
[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
Это код-гольф , поэтому выигрывает самая короткая программа или фрагмент на каждом языке!