勉強中のメモ書きです。
マンハッタン距離とは
2つの座標の差の総和を表したもの。2点間の距離。
|x_1 - x_2| + |y_1 - y_2|
で表せる。
例えば下記の図のような座標があったとする。
(画像は 「高校数学の美しい物語」さんより引用)
(x2, y3) と (x5,y7) の2点間のマンハッタン距離は
|2-5| + |3-7| = 7
で、7となる。
マンハッタン距離の名称は、碁盤のように道路が張り巡らさせれているマンハッタンから由来、2点間を徒歩で歩いたらどれぐらいの距離がかかるか、を示したもの(らしい)。
JavaScript でマンハッタン距離を計算する
以下、標準入力で「地点数」「各地点のx、y座標情報」が、標準入力で提供されているとする。
1行目に、地点の数 「n」。
2行目以降に地点情報が記述。
x, y を空白区切りで表し、2点を2行にわたって記述されている。
入力例:
2
2 3
5 7
以下のコードでマンハッタン距離の算出ができる
function main(input) {
const args = input.split("\n");
const n = parseInt(args[0], 10);
let x = [];
let y = [];
for(i = 0 ; i < n ; i++) {
let nums = args[i+1].split(' ');
x.push(parseInt(nums[0], 10));
y.push(parseInt(nums[1], 10));
}
const manhattan = Math.abs(x[0] - x[1]) + Math.abs(y[0] - y[1]);
console.log(manhattan) // 7
}
main(require("fs").readFileSync("/dev/stdin", "utf8"));
地点情報が2行以上にわたる場合、行数分を配列x、yに格納してそれぞれの地点間の距離を求める。