1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

マンハッタン距離について

Last updated at Posted at 2022-04-02

勉強中のメモ書きです。

マンハッタン距離とは

2つの座標の差の総和を表したもの。2点間の距離。

|x_1 - x_2| + |y_1 - y_2|

で表せる。

例えば下記の図のような座標があったとする。
(画像は 「高校数学の美しい物語」さんより引用)

manhattan.jpg

(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に格納してそれぞれの地点間の距離を求める。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?