Jest to „odpowiednik” innej łamigłówki, Osiem monet dla uczciwego króla na Puzzling.SE.
Możesz przeczytać powyższą układankę jako tło. Szczegóły dotyczące tej układanki są następujące.
Tworzony jest zestaw 8 rodzajów monet o różnych wartościach, król chce, abyś znalazł maksymalną N, tak aby dowolną liczbę cen od 0 do N można było zapłacić kombinacją nie więcej niż 8 monet i bez opłat.
Na przykład (wzięty z odpowiedzi Glorfindela). Jeśli podano zestaw monet o wartościach 1, 2, 5, 13, 34, 89, 233, 610, twój program powinien wypisać 1596, ponieważ każda liczba od 0 do 1596 (włącznie) może być reprezentowana przez sumę nie więcej niż 8 liczb z podanej listy (liczby mogą się powtarzać), a 1597 nie może być reprezentowane w ten sposób.
W matematyczny sposób, jeśli wejście jest zestawem S składającym się z 8 dodatnich liczb całkowitych, pożądane wyjście N spełnia to, że dla dowolnej liczby n między 0 a N istnieje x1, x2, x3, ..., x8, tak że
Twoim celem jest napisanie programu, funkcji lub fragmentu, który pobiera 8 liczb jako dane wejściowe i wyprowadza maksymalną N, jak opisano powyżej.
Zasady:
- Dozwolone elastyczne we / wy, dzięki czemu Twój program może przyjmować dane wejściowe w dowolnej formie, która jest najbardziej odpowiednia. Możesz założyć, że liczby wejściowe są posortowane w sposób, który najlepiej odpowiada Twojemu programowi.
- Proszę podać to w swojej odpowiedzi, jeśli twój program zależy od kolejności wprowadzania danych
- Dane wejściowe to zestaw 8 różnych dodatnich liczb całkowitych (bez zer). Dane wyjściowe to jedna nieujemna liczba całkowita.
- Jeśli w zestawie wejściowym nie ma 1, twój program powinien wypisać 0, ponieważ dowolna liczba od 0 do 0 spełnia wymagania.
- W przypadku nieprawidłowego wprowadzenia (zestaw zawiera liczby zerowe, ujemne lub zduplikowane), twój program może zrobić wszystko.
- Standardowe luki są zabronione.
- Twój program powinien uruchomić się w ciągu kilku minut na nowoczesnym komputerze.
Przypadki testowe (przejęte głównie z odpowiedzi pod połączonym pytaniem dotyczącym zagadek):
[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
To jest golf golfowy , więc wygrywa najkrótszy program lub fragment w każdym języku!