The Manhattan jarak pada grid biasa adalah jumlah langkah orthogonal orang perlu mengambil untuk mencapai satu sel dari yang lain. Langkah-langkah ortogonal adalah langkah-langkah yang melewati tepi sel-sel kisi (yang bertentangan dengan sudut-sudut, yang akan memberi kita jarak Chebyshev ).
Kita dapat menentukan jarak yang sama pada grid lain, misalnya grid segitiga. Kami dapat mengatasi masing-masing sel dalam kisi dengan skema pengindeksan berikut, di mana setiap sel berisi x,y
pasangan:
____________________________________...
/\ /\ /\ /\ /\
/ \ 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\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
. . . . . . . . . .
. . . . . . . . . .
Sekarang jarak Manhattan pada grid ini lagi-lagi adalah jumlah minimal langkah melintasi tepi untuk bergerak dari satu sel ke sel lainnya. Jadi Anda dapat beralih dari 3,1
ke 2,1
, 4,1
atau 3,2
, tetapi tidak ke segitiga lain, karena itu akan menjadi titik persimpangan daripada tepi.
Misalnya, jarak dari 2,1
ke 5,2
adalah 4
. Jalur terpendek umumnya tidak unik, tetapi salah satu cara untuk membuat jarak dalam 4 langkah adalah:
2,1 --> 3,1 --> 3,2 --> 4,2 --> 5,2
Tantangan
Diberikan dua pasangan koordinat dan dari skema pengalamatan di atas, kembalikan jarak Manhattan di antara mereka.x1,y1
x2,y2
Anda dapat berasumsi bahwa keempat input adalah bilangan bulat non-negatif, masing-masing kurang dari 128. Anda dapat mengambilnya dalam urutan apa pun dan dikelompokkan secara sewenang-wenang (empat argumen terpisah, daftar empat bilangan bulat, dua pasang bilangan bulat, matriks 2x2, .. .).
Anda dapat menulis sebuah program atau fungsi dan menggunakan salah satu metode standar untuk menerima input dan memberikan output.
Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
Uji Kasus
Setiap test case diberikan sebagai .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)
(memanggil metode terpisah c
dengan empat argumen dan 0
sebagai argumen kelima) untuk jawaban saya.