Manhattan mesafe düzenli bir ızgara üzerinde bir diğerinden bir hücre ulaşmak için gereken gereken ortogonal adımları sayısıdır. Ortogonal adımlar, ızgara hücrelerinin kenarlarından geçen köşelerdir (bize, Chebyshev mesafesini verecek olan köşelerin aksine ).
Üçgen ızgara gibi diğer ızgaralar üzerinde benzer bir mesafe tanımlayabiliriz. Her bir hücrenin bir x,y
çift içerdiği aşağıdaki indeksleme şemasıyla ızgaradaki ayrı hücreleri ele alabiliriz :
____________________________________...
/\ /\ /\ /\ /\
/ \ 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\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
. . . . . . . . . .
. . . . . . . . . .
Şimdi bu ızgaradaki Manhattan mesafesi, bir hücreden diğerine ulaşmak için yine kenarlardaki en az basamak sayısıdır. Yani gidebileceği 3,1
için 2,1
, 4,1
ya 3,2
bu yerine kenarlara göre daha geçiş noktalarında olacağından, fakat başka herhangi bir üçgeni.
Örneğin, mesafe 2,1
için 5,2
olan 4
. En kısa yol genellikle benzersiz değildir ancak mesafeyi 4 adımda gerçekleştirmenin bir yolu:
2,1 --> 3,1 --> 3,2 --> 4,2 --> 5,2
Meydan okuma
İki koordinat çifti göz önüne alındığında ve yukarıdaki adresleme şemasından, aralarındaki Manhattan mesafesini döndürün.x1,y1
x2,y2
Her dört girdinin de negatif olmayan tam sayı olduğunu, her birinin 128'den küçük olduğunu varsayabilirsiniz. Bunları istediğiniz sırada ve keyfi olarak gruplandırabilirsiniz (dört ayrı argüman, dört tamsayı listesi, iki tamsayı çifti, 2x2 matris, .. .).
Bir program veya fonksiyon yazabilir ve giriş alma ve çıkış sağlama standart yöntemlerinden herhangi birini kullanabilirsiniz .
Herhangi bir programlama dilini kullanabilirsiniz , ancak bu boşlukların varsayılan olarak yasak olduğunu unutmayın .
Bu kod-golf , yani en kısa geçerli cevap - bayt cinsinden - kazanır.
Test Kılıfları
Her test durumu olarak verilmiştir .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
dört argüman ve 0
beşinci argüman olarak ayrılmış yöntem çağırılarak).