Các khoảng cách Manhattan trên một mạng lưới thông thường là số lượng các bước trực giao ta cần phải làm để đạt được một tế bào từ khác. Các bước trực giao là những bước đi qua các cạnh của các ô lưới (trái ngược với các góc, sẽ cho chúng ta khoảng cách Ch Quashev ).
Chúng ta có thể định nghĩa một khoảng cách tương tự trên các lưới khác, ví dụ lưới tam giác. Chúng ta có thể giải quyết các ô riêng lẻ trong lưới bằng sơ đồ lập chỉ mục sau, trong đó mỗi ô chứa một x,y
cặp:
____________________________________...
/\ /\ /\ /\ /\
/ \ 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\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
. . . . . . . . . .
. . . . . . . . . .
Bây giờ khoảng cách Manhattan trên lưới này một lần nữa là số bước tối thiểu trên các cạnh để đi từ ô này sang ô khác. Vì vậy, bạn có thể di chuyển từ 3,1
đến 2,1
, 4,1
hoặc 3,2
, nhưng không phải bất kỳ tam giác nào khác, vì chúng sẽ là các điểm giao nhau chứ không phải là các cạnh.
Ví dụ, khoảng cách từ 2,1
đến 5,2
là 4
. Con đường ngắn nhất thường không phải là duy nhất, nhưng một cách để tạo khoảng cách trong 4 bước là:
2,1 --> 3,1 --> 3,2 --> 4,2 --> 5,2
Các thách thức
Cho hai cặp tọa độ và từ sơ đồ địa chỉ trên, trả về khoảng cách Manhattan giữa chúng.x1,y1
x2,y2
Bạn có thể giả sử rằng tất cả bốn đầu vào là số nguyên không âm, mỗi số nhỏ hơn 128. Bạn có thể lấy chúng theo bất kỳ thứ tự nào và được nhóm tùy ý (bốn đối số riêng biệt, danh sách bốn số nguyên, hai cặp số nguyên, ma trận 2x2, .. .).
Bạn có thể viết một chương trình hoặc một chức năng và sử dụng bất kỳ phương pháp tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra.
Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào , nhưng lưu ý rằng các lỗ hổng này bị cấm theo mặc định.
Đây là môn đánh gôn , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.
Các trường hợp thử nghiệm
Mỗi trường hợp thử nghiệm được đưa ra là .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)
(gọi phương thức tách biệt c
với bốn đối số và 0
là đối số thứ năm) vào câu trả lời của tôi.