맨해튼 거리 정규 그리드 하나가 서로 하나의 셀에 도달하기 위해 수행해야하는 직교 단계의 수입니다. 직교 단계는 격자 셀의 가장자리를 통과하는 단계입니다 (모서리와 달리 Chebyshev 거리를 제공합니다 ).
삼각 격자와 같은 다른 격자에서도 비슷한 거리를 정의 할 수 있습니다. 각 셀에 x,y
쌍이 포함 된 다음 색인 구성표를 사용하여 그리드의 개별 셀을 처리 할 수 있습니다 .
____________________________________...
/\ /\ /\ /\ /\
/ \ 1,0/ \ 3,0/ \ 5,0/ \ 7,0/ \
/ 0,0\ / 2,0\ / 4,0\ / 6,0\ / 8,0\
/______\/______\/______\/______\/______\...
\ /\ /\ /\ /\ /
\ 0,1/ \ 2,1/ \ 4,1/ \ 6,1/ \ 8,1/
\ / 1,1\ / 3,1\ / 5,1\ / 7,1\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
/ \ 1,2/ \ 3,2/ \ 5,2/ \ 7,2/ \
/ 0,2\ / 2,2\ / 4,2\ / 6,2\ / 8,2\
/______\/______\/______\/______\/______\...
\ /\ /\ /\ /\ /
\ 0,3/ \ 2,3/ \ 4,3/ \ 6,3/ \ 8,3/
\ / 1,3\ / 3,3\ / 5,3\ / 7,3\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
. . . . . . . . . .
. . . . . . . . . .
이제이 그리드의 맨해튼 거리는 다시 한 셀에서 다른 셀로 이동하기 위해 가장자리를 가로 지르는 최소 단계 수입니다. 그래서 당신은 이동할 수 3,1
로 2,1
, 4,1
또는 3,2
그 오히려 가장자리보다 포인트를 교차 할 것이기 때문에, 있지만 다른 삼각형.
예를 들어으로부터의 거리 2,1
에가 5,2
있다 4
. 최단 경로는 일반적으로 고유하지 않지만 4 단계로 거리를 만드는 한 가지 방법은 다음과 같습니다.
2,1 --> 3,1 --> 3,2 --> 4,2 --> 5,2
도전
두 개의 좌표 쌍 과 위의 주소 지정 체계에서 맨해튼 거리를 반환하십시오.x1,y1
x2,y2
4 개의 입력이 모두 128보다 작은 음이 아닌 정수라고 가정 할 수 있습니다. 임의의 순서로 임의로 그룹화 할 수 있습니다 (4 개의 개별 인수, 4 개의 정수 목록, 2 개의 정수 쌍, 2x2 행렬, .. ).
사용자가 쓸 수 프로그램이나 함수를 상기의 어떠한 사용도 표준 방법 의 입력을 수신하고 출력을 제공한다.
모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.
이것은 code-golf 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.
테스트 사례
각 테스트 사례는로 제공됩니다 .x1,y1 x2,y2 => result
1,2 1,2 => 0
0,1 1,1 => 1
1,0 1,1 => 3
2,1 5,2 => 4
0,0 0,127 => 253
0,0 127,0 => 127
0,0 127,127 => 254
0,127 127,0 => 254
0,127 127,127 => 127
127,0 127,127 => 255
75,7 69,2 => 11
47,58 36,79 => 42
77,9 111,23 => 48
123,100 111,60 => 80
120,23 55,41 => 83
28,20 91,68 => 111
85,107 69,46 => 123
16,25 100,100 => 159
62,85 22,5 => 160
92,26 59,113 => 174
62,22 35,125 => 206
(a,b,x,y)->c(a,b,x,y,0)
분리 된 메서드 호출) 를 추가 할 필요가 없습니다 . c
0