Puzzling.SE 의 공정한 왕 을 위한 8 개의 동전 인 또 다른 퍼즐의 "상대"입니다 .
배경에 대한 위의 퍼즐을 읽을 수 있습니다. 이 퍼즐에 대한 자세한 내용은 다음과 같습니다.
값이 다른 8 종류의 동전 세트가 만들어지면, 왕은 최대 N을 찾아서 0에서 N까지의 가격에 8 개 이하의 동전을 사용하고 요금없이 지불 할 수 있습니다.
예를 들어 (Glorfindel의 답변에서 발췌). 1, 2, 5, 13, 34, 89, 233, 610 값의 코인 세트가 제공되면 0에서 1596 (포함) 사이의 모든 숫자를 더 이상 합계로 표시 할 수 없으므로 프로그램에서 1596을 출력해야합니다. 주어진 목록에서 8 개 이상의 숫자 (숫자가 반복 될 수 있음) 인 반면 1597은 그런 식으로 표현할 수 없습니다.
수학적 방식으로, 입력이 8 개의 양의 정수로 구성된 세트 S 인 경우, 원하는 출력 N 은 0과 N 사이의 임의의 수 n에 대해 x1, x2, x3, ..., x8이 존재 하는 것을 만족시킨다.
목표는 8 개의 숫자를 입력으로 사용하여 위에서 설명한대로 최대 N을 출력하는 프로그램, 함수 또는 스 니펫을 작성하는 것입니다.
규칙 :
- 유연한 I / O가 허용되므로 프로그램이 가장 적합한 형식으로 입력을 취할 수 있습니다. 입력 번호가 프로그램에 가장 적합한 방식으로 정렬되어 있다고 가정 할 수 있습니다.
- 프로그램이 입력 순서에 의존하는 경우 답변에 기재하십시오
- 입력은 8 개의 양의 정수 (0이 아님)의 집합입니다. 출력은 음이 아닌 정수입니다.
- 입력 세트에 1이 없으면 0에서 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
이것은 코드 골프 이므로 각 언어에서 가장 짧은 프로그램이나 스 니펫이 승리합니다!