시어 핀 스키 삼각형을 그리기하는 한 짓을 죽음 . 우리가 할 수있는 다른 흥미로운 일들이 있습니다. 우리가 삼각형을 충분히 움켜 쥐면 거꾸로 된 삼각형을 프랙탈 그래프의 노드로 볼 수 있습니다. 그 그래프를 둘러 보자!
먼저 각 노드에 번호를 할당 해 봅시다. 가장 큰 거꾸로 된 삼각형은 노드 0이 될 것입니다. 그런 다음 계층별로 내려갑니다 (폭 우선), 왼쪽 위 오른쪽 순서로 연속 번호를 할당합니다.
작은 숫자가 약간 흐릿한 큰 버전을 보려면 클릭하십시오.
번호 매기기를 정의하는 또 다른 방법은 중앙 노드가 인덱스를 가지고 있다는 것입니다 (물론,이 패턴은. 파란색 삼각형 내부 무한히 계속) 0
하고, 노드의 자식 i
(다음 - 작은 규모의 인접한 삼각형) 인덱스를 가지고 3i+1
, 3i+2
하고 3i+3
.
이 그래프를 어떻게 이동합니까? 주어진 삼각형에서 취할 수있는 자연스런 단계는 최대 6 개입니다.
- 하나는 항상 모서리 중 하나의 중간 점을 통해 현재 노드의 세 하위 중 하나로 이동할 수 있습니다. 우리는 이러한 동작을 지정하는 것
N
,SW
하고SE
. 우리는 노드에서 현재 인 경우 예를 들면2
, 이러한 노드로 이어질 것이다7
,8
,9
각각. 가장자리를 통한 다른 이동 (간접 후손)은 허용되지 않습니다. - 삼각형의 모서리에 닿지 않으면 직접 모체 또는 두 개의 간접 조상 중 하나에 세 모서리 중 하나를 이동할 수도 있습니다. 우리는 이러한 동작을 지정하는 것
S
,NE
하고NW
. 우리는 노드에서 현재 인 경우 예는31
,S
이어질 것10
,NE
잘못된 것과NW
로 이어질 것입니다0
.
도전
두 음이 아닌 정수를 부여 x
하고 y
, 최단 경로를 찾는 x
으로 y
만 이동 여섯 전술 사용. 최단 경로가 여러 개 있으면 그 중 하나를 출력하십시오.
위의 다이어그램에 묘사 된 5 개 이상의 수준에서 코드가 작동해야합니다. 당신은 그것을 가정 할 수 있습니다 x, y < 1743392200
. 이를 통해 32 비트 부호있는 정수 안에 맞출 수 있습니다. 이것은 트리의 20 개 레벨에 해당합니다.
코드는 5 초 이내에 유효한 입력을 처리해야합니다 . 이것은 무차별 대입 우선 탐색을 배제하지만 상당히 느슨한 제약 조건입니다. 참조 구현은 깊이 1000에 대한 임의의 입력을 0.5 초 (노드의 ~ 480 자리 숫자)로 처리합니다.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.
출력은 현 평면 모호 목록되어야한다 N
, S
, NE
, NW
, SE
, SW
, 임의의 적절한 세퍼레이터를 사용하여 (공백 바꿈 쉼표, ","
...).
표준 코드 골프 규칙이 적용됩니다.
테스트 사례
처음 몇 가지 테스트 사례는 위의 다이어그램을 사용하여 손으로 해결할 수 있습니다. 다른 것들은 답변이 충분히 효율적임을 보장합니다. 그것들을 위해, 나열되지 않은 같은 길이의 다른 솔루션이있을 수 있습니다.
0 40 => N N N N
66 67 => S SW N N N
30 2 => NW NW -or- NE SW
93 2 => NE SW
120 61 => NW NW NW NW N SE SW N
1493682877 0 => S S NW NW
0 368460408 => SW SW N N SW SW SE SW SW N SE N N SW SW N SE SE
1371432130 1242824 => NW NW NE NW N SE SW SW SW SE SE SW N N N N SW
520174 1675046339 => NE NW NE NE SE SE SW SW N SE N SW N SW SE N N N N SE SE SW SW
312602548 940907702 => NE NW S SW N N SW SE SE SE SW SE N N SW SE SE SE SW
1238153746 1371016873 => NE NE NE SE N N SW N N SW N SE SE SW N SW N N SE N SE N
547211529 1386725128 => S S S NE NW N N SE N SW N SE SW SE SW N SE SE N SE SW SW N
1162261466 1743392199 => NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE SE