Esta es una "contraparte" de otro rompecabezas, Ocho monedas para el rey justo en Puzzling.SE.
Puedes leer el rompecabezas de arriba para el fondo. Los detalles sobre este rompecabezas son los siguientes.
Se crea un conjunto de 8 tipos de monedas de diferentes valores, el rey quiere que descubras el N máximo, de modo que cualquier cantidad de precio de 0 a N se pueda pagar con una combinación de no más de 8 monedas y sin cargos.
Por ejemplo, (tomado de la respuesta de Glorfindel). Si se da un conjunto de monedas de valores 1, 2, 5, 13, 34, 89, 233, 610, su programa debería generar 1596, porque cada número entre 0 y 1596 (inclusive) puede representarse por la suma de no más de 8 números de la lista dada (los números pueden repetirse), mientras que 1597 no puede representarse de esa manera.
De manera matemática, si la entrada es un conjunto S que consta de 8 enteros positivos, la salida deseada N satisface que para cualquier número n entre 0 y N, exista x1, x2, x3, ..., x8 de manera que
Su objetivo es escribir un programa, una función o un fragmento que tome 8 números como entrada y genere el N máximo como se describió anteriormente.
Reglas:
- Se permiten E / S flexibles, por lo que su programa puede tomar la entrada en cualquier forma que sea más adecuada. Puede suponer que los números de entrada se ordenan de la manera que mejor se adapte a su programa.
- Indíquelo en su respuesta si su programa depende del orden de entrada
- La entrada es un conjunto de 8 enteros positivos diferentes (sin ceros). La salida es un entero no negativo.
- En caso de que no haya 1 en el conjunto de entrada, su programa debería generar 0 porque cualquier número de 0 a 0 satisface el requisito.
- En el caso de una entrada no válida (el conjunto contiene números cero, negativos o duplicados), su programa puede hacer cualquier cosa.
- Las lagunas estándar están prohibidas.
- Su programa debería ejecutarse dentro de unos minutos en una computadora moderna.
Casos de prueba (tomados principalmente de las respuestas bajo la pregunta vinculada sobre 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
Este es un código de golf , por lo que gana el programa o fragmento más corto en cada idioma.