The Манхеттен відстань на регулярній сітці число ортогональних кроків потрібно вжити , щоб досягти одну клітку від іншої. Ортогональні сходинки - це ті, що проходять через краї комірок сітки (на відміну від кутів, які давали б нам відстань Чебишева ).
Ми можемо визначити подібну відстань на інших сітках, наприклад трикутної сітки. Ми можемо адресувати окремі комірки в сітці за такою схемою індексації, де кожна комірка містить anx,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
Ви можете припустити, що всі чотири входи є невід’ємними цілими числами, кожен менше 128. Ви можете приймати їх у будь-якому порядку та довільно групувати (чотири окремих аргументи, список чотирьох цілих чисел, дві пари цілих чисел, матриця 2x2, .. .).
Ви можете написати програму або функцію та використовувати будь-який із стандартних методів отримання вводу та надання виводу.
Ви можете використовувати будь-яку мову програмування , але зауважте, що ці лазівки за замовчуванням заборонені.
Це код-гольф , тому найкоротший вірний відповідь - вимірюється в байтах - виграє.
Випробування
Кожен тестовий випадок задається як .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
як п'ятий аргумент) до своєї відповіді.