음이 아닌 모든 정수를 네 개의 제곱 정수의 합으로 다시 작성할 수 있다는 것은 고대 지식입니다. 예를 들어 숫자 1은 로 표현 될 수 있습니다 . 또는 일반적으로 음이 아닌 정수 에 대해 정수 가 존재 합니다.
Joseph-Louis Lagrange 는 1700 년대에 이것을 증명 했으므로 종종 Lagrange의 정리 라고 합니다.
이것은 때때로 쿼터니언과 관련하여 논의되는데 , 1800 년대 윌리엄 해밀턴 이 로 여기서 는 실수이고 및 는 곱하지 않는 고유 한 허수 단위입니다. 특히, 쿼터니언 각 성분을 제곱하는 것과 관련하여 설명됩니다. 이 수량은 때때로 norm 또는 squared norm 또는 quadrance라고도 합니다. 라그랑주 정리에 대한 현대의 일부 증거 는 쿼터니언을 사용합니다.
Rudolf Lipschitz 는 Lipschitz quaternions라고하는 정수 성분 만 가진 쿼터니언을 연구했습니다. 사분면을 사용하면 모든 Lipschitz 쿼터니언이 정수에 친구가 있다고 생각할 수 있습니다. 예를 들어 쿼터니언 은 정수 와 연관된 것으로 생각할 수 있습니다. . 또한 우리가 거꾸로 가면 모든 정수는 Lipschitz 쿼터니언에 친구가 있다고 생각할 수 있습니다.
그러나 Lagrange의 정리에 대한 흥미로운 세부 사항이 있습니다. 요약은 독특하지 않습니다. 각 정수에는 합계를 만들기 위해 합산 할 수있는 4 개의 제곱 집합이 여러 개있을 수 있습니다. 예를 들어, 숫자 1은 음이 아닌 정수를 사용하여 4 가지 방식으로 표현할 수 있습니다 (이 문제에 대해 음이 아닌 정수만 고려하십시오) :
Summand는 항상 0 또는 1의 제곱이지만 식에서 다른 위치에있을 수 있습니다.
이 과제를 위해, 중복을 제거하기 위해 summands를 가장 낮은 것부터 가장 높은 것까지 "정렬"하여,이 연습에서 1이 4 개의 제곱의 합으로 표현 될 수있는 방법은 한 가지만 고려할 수 있습니다.
또 다른 예는 숫자 42로, 네 가지 방식으로 표현할 수 있습니다 (다시 음수가 아닌 a, b, c, d 만 고려하고 중복 구성 요소 배열 제거).
정수를 특정 쿼터니언과 관련된 것으로 표현하는 이러한 서로 다른 방식을 각각 상상한다면 어떻게 될까요? 그런 다음 숫자 42가이 4 개의 쿼터니언과 관련이 있다고 말할 수 있습니다.
쿼터니언의 표준 컴퓨터 그래픽 해석을 상상한다면, 여기서 , 및 는 3 차원 유클리드 공간의 벡터 이므로 쿼터니언 의 x , y 및 z 구성 요소 3 차원 데카르트 좌표 인 경우, 우리는이 사고 과정을 통해 각 정수가 공간에서 3 차원 좌표 세트와 연관 될 수 있다고 상상할 수 있습니다. 예를 들어, 숫자 42는 다음 4 개의 ( x , y , z ) 좌표 와 연관됩니다 .
이것은 점 구름 또는 공간의 점 집합으로 생각할 수 있습니다. 이제 공간의 유한 점 집합에 대한 흥미로운 점 중 하나는 항상 주위에 최소 경계 상자를 그릴 수 있다는 것입니다. 모든 점에 맞을만큼 크지 만 크지 않은 상자입니다. 상자가 축 과 정렬 된 일반 상자 라고 생각하면이를 축 정렬 경계 상자 라고합니다 . 경계 상자에는 너비, 길이 및 높이를 결정하고 함께 곱하여 계산할 수있는 볼륨이 있습니다.
그런 다음 쿼터니언에 의해 형성된 점에 대한 경계 상자의 볼륨을 상상할 수 있습니다. 정수 1의 경우이 연습의 기준을 사용하여 사분면이 1, . 이것은 매우 간단한 점 구름이며, 점이 하나뿐이므로 경계 상자의 볼륨은 0입니다. 그러나 정수 42의 경우 4 개의 쿼터니언과 4 개의 점이 있으며 그 주위에 경계 상자를 그릴 수 있습니다. 상자의 최소 점은 이고 최대 값은 이며, 너비, 길이 및 높이가 2, 2 및 2가되어 부피는 8입니다.
정수 의 경우 qvolume은 과 동일한 사변형을 갖는 쿼터니언으로 형성된 모든 3D 점의 축 정렬 경계 상자의 부피입니다. 여기서 쿼터니언의 구성 요소 는 음수가 입니다.
음이 아닌 단일 정수 주어지면 의 qvolume을 출력 하는 프로그램이나 함수를 만듭니다 .
예 :
input -> output
0 -> 0
1 -> 0
31 -> 4
32 -> 0
42 -> 8
137 -> 96
1729 -> 10032
이것은 코드 골프, 가장 적은 바이트 수입니다.