Ceci est une "contrepartie" d'un autre puzzle, Huit pièces pour le beau roi sur Puzzling.SE.
Vous pouvez lire le puzzle ci-dessus pour le fond. Les détails de ce puzzle sont les suivants.
Un ensemble de 8 types de pièces de valeurs différentes est créé, le roi veut que vous trouviez le N maximum de sorte que n'importe quel nombre de prix de 0 à N puisse être payé avec une combinaison pas plus de 8 pièces et sans frais.
Par exemple, (tiré de la réponse de Glorfindel). Si un ensemble de pièces de valeurs 1, 2, 5, 13, 34, 89, 233, 610 est donné, votre programme devrait afficher 1596, car chaque nombre compris entre 0 et 1596 (inclus) peut être représenté par la somme de pas plus de 8 numéros de la liste donnée (les chiffres peuvent se répéter), tandis que 1597 ne peut pas être représenté de cette façon.
De manière mathématique, si l'entrée est un ensemble S composé de 8 entiers positifs, la sortie souhaitée N vérifie que pour tout nombre n compris entre 0 et N, il existe x1, x2, x3, ..., x8 tels que
Votre objectif est d'écrire un programme, une fonction ou un extrait de code qui prend 8 chiffres en entrée et de sortir le N maximum comme décrit ci-dessus.
Règles:
- E / S flexibles autorisées, afin que votre programme puisse prendre l'entrée sous la forme qui convient le mieux. Vous pouvez supposer que les numéros d'entrée sont triés de la manière qui convient le mieux à votre programme.
- Veuillez l'indiquer dans votre réponse si votre programme dépend de l'ordre d'entrée
- L'entrée est un ensemble de 8 entiers positifs différents (pas de zéros). La sortie est un entier non négatif.
- Dans le cas où il n'y a pas de 1 dans le jeu d'entrée, votre programme devrait sortir 0 car tout nombre de 0 à 0 satisfait à l'exigence.
- Dans le cas d'une entrée invalide (l'ensemble contient zéro, des nombres négatifs ou en double), votre programme peut tout faire.
- Les failles standard sont interdites.
- Votre programme devrait s'exécuter en quelques minutes sur un ordinateur moderne.
Cas de test (principalement tirés des réponses sous la question liée sur 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
C'est un code-golf , donc le programme ou l'extrait le plus court dans chaque langue gagne!