추가 피라미드 주어지면 그것을 해결할 수 있는지 결정하십시오. 추가 피라미드는 레이어 로 구성되며 각 레이어 는 아래에있는 것보다 하나 적은 수를 갖습니다. 레이어 는 됩니다. 은 기본 레이어이고 은 위에있는 레이어 입니다. 의 번째 수는 로 표시된다 . 은 의 가장 왼쪽 숫자 이고 은 의 오른쪽 숫자 입니다. 위에있는 시각화 할 수 있습니다및 중간 따라서 이름 "부가의 피라미드 ".
- 즉, 피라미드의 모든 숫자는 0이 아닌 양의 정수입니다.
- 즉, 피라미드의 기본 레이어에없는 모든 숫자의 합은 그 아래 두 숫자.
- 에 숫자 가 있으면 에 숫자가 있으므로 은 의 가장 오른쪽 숫자입니다 . 간단히 말하면, 각 레이어는 그 아래 레이어보다 하나 적은 숫자를 갖습니다.
또한 피라미드 퍼즐 제거 어떤 숫자와 부가 피라미드 (대체 ). 그것의 해결책은 추가 피라미드 . 여기서 퍼즐에 원래 존재했던 숫자는 변경되지 않은 채 남아 있습니다. 이러한 퍼즐에는 둘 이상의 솔루션이있을 수 있습니다.
피라미드 퍼즐이 추가되어 정확히 하나의 솔루션이 있는지 확인합니다.
입력
다음과 같은 형식으로 입력 할 수 있지만 일관성이 있습니다.
- 레이어 배열.
- 왼쪽과 오른쪽 패딩뿐만 아니라 요소 사이의 구분자 (일회에 한 번만 사용됨)로 일관된 비 양성 정수 값을 사용하는 피라미드 모양의 레이어 배열입니다. 분리기와 패딩이 같아야합니다.
- 일관된 유효한 오른쪽 또는 왼쪽 패딩이있는 레이어 배열 (일관되어야하며이 경우 오른쪽과 왼쪽 패딩을 혼합해서는 안 됨)
양의 정수가 아닌 일관된 값을 사용하여 누락 된 숫자를 나타내야합니다. 이 값은 패딩으로 사용할 수 없습니다. 또한 레이어를 연결하여 (여전히 분리 할 수 있음) 순서는베이스에서 맨 위 또는 맨 위에서베이스로 정렬 할 수 있습니다.
산출
두 가지 일관된 고유 값 중 하나입니다. 하나는 고유 한 솔루션이 존재하고 다른 하나는 솔루션이 없거나 둘 이상의 솔루션이 존재 함을 나타냅니다.
규칙
- 은 경우 항상 참입니다. 즉, 입력은 세 개의 숫자가 모두 알려진 경우 합계가 아닌 다른 두 개의 숫자 위에 숫자가 포함되지 않도록 보장됩니다.
- 즉, 피라미드에는 알려진 숫자가 하나 이상 포함됩니다.
- 이런 일을 하지 마십시오 .
- 이것은 code-golf 이므로 가장 짧은 답변이 이깁니다! 그러나 언어가 "너무 장황하다"고해서 솔루션을 게시하지 못하게해서는 안됩니다.
테스트 사례
상기베이스의 상부로부터 레이어 배열은,이 시험의 경우에 사용되는 0
표현.
[[10], [0, 0], [0, 2, 0], [0, 0, 0, 1]] -> True
[[32], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] -> True
[[0], [1, 1]] -> True
[[1], [0, 0]] -> False
[[10], [5, 5], [2, 3, 2], [0, 0, 0, 0]] -> False
[[5], [0, 0], [0, 0, 0]] -> False
작동 예
테스트 사례가 여기에서 작동합니다.
독특한 솔루션 1
단계 1 : .
2 단계 : .
단계 3 : .
4 단계 : .
5-6 단계는 4와 유사합니다.
여기에 우리 고유의 솔루션이 있습니다.
독특한 솔루션 2
1 단계 : 여기에는 분명한 접근 방법이 없으므로 가능한 최소값을 사용해 봅시다.
2-5 단계 : 최소값이 솔루션으로 표시되는 것처럼 보이므로 이것이 유일한 솔루션이므로 고유합니다.
힌트 : 충분히 생각하면 증명할 수있는이 퍼즐과 관련된 추가 피라미드 퍼즐에 대한 정리가 있습니다.
독특한 솔루션 3
1 단계 : .
이것은 분명히 독특한 솔루션입니다.
해결책 없음 1
이므로 해결책이 없습니다.
해결책 없음 2
1-2 단계 : .
거기에서 모순되는 따르 므로 해결책이 없습니다.
고유하지 않은 솔루션
두 가지 솔루션 :
솔루션이 두 개 이상 있으므로 고유 한 솔루션이 없습니다.