これは別のパズルの「カウンターパート」です。Puzzling.SEの公正な王のための8つのコインです。
上記のパズルの背景を読むことができます。このパズルの詳細は次のとおりです。
異なる値の8種類のコインのセットが作成されます。王は、0からNまでの任意の数の価格が8コイン以下の組み合わせで無料で支払われるように、最大Nを見つけることを望んでいます。
たとえば、(Glorfindelの回答から引用)。値1、2、5、13、34、89、233、610のコインのセットが与えられた場合、プログラムは1596を出力する必要があります。与えられたリストから8個以上の数字(数字は繰り返される可能性があります)、1597はそのようには表現できません。
数学的には、入力が8つの正の整数で構成される集合Sである場合、望ましい出力Nは、0からNまでの任意の数nに対して、x1、x2、x3、...、x8が存在することを満たします。
あなたの目標は、入力として8つの数字を受け取り、上記のように最大Nを出力するプログラム、関数、またはスニペットを作成することです。
ルール:
- 柔軟なI / Oが許可されているため、プログラムは最適な形式で入力を取得できます。入力番号は、プログラムに最適な方法でソートされていると想定できます。
- プログラムが入力順序に依存している場合は、回答にそれを明記してください
- 入力は、8つの異なる正の整数(ゼロなし)のセットです。出力は、1つの非負整数です。
- 入力セットに1がない場合、0〜0の任意の数が要件を満たすため、プログラムは0を出力する必要があります。
- 無効な入力(セットにゼロ、負の数、または重複する数が含まれる)の場合、プログラムは何でもできます。
- 標準的な抜け穴は禁止されています。
- プログラムは、最新のコンピューターで数分以内に実行されるはずです。
テストケース(主に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
これはコードゴルフであるため、各言語で最も短いプログラムまたはスニペットが優先されます。