マンハッタン距離
(0, 0) から (3, 4) までのマンハッタン距離は7で、直線距離の5ではありません。格子に沿って横に3、縦に4進むためです。2点を入力すると距離と両方の差が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 0
- Y1
- 0
- X2
- 3
- Y2
- 4
- 距離
- 7
- Dx
- 3
- Dy
- 4
- Abs dx
- 3
直交座標平面上の二点について、マンハッタン距離 — タクシー距離または L1 計量とも呼ばれます — は座標の絶対差の和です。
マンハッタン(タクシー幾何 / L1)公式が格子距離を測る仕組み
第一点を (x1, y1)、第二点を (x2, y2) とラベル付けしてください。マンハッタン距離は座標軸に平行にのみ進む最短経路の長さです。すなわち x2 から x1 を引いた値の絶対値に、y2 から y1 を引いた値の絶対値を加えたものです。
この式は常に非負で、二点が一致するときだけ零になり、端点を入れ替えても対称です。教室での定番確認には、三と四の直角三角形の辺があり、ユークリッドの五ではなくマンハッタン距離の七になり、(0, 0) から (1, 1) への単位対角線は二の平方根ではなく二になります。
名称は、タクシーが建物を斜めに抜けられない街区格子に由来し、数学では同じ量が差分ベクトルの L1 ノルムです。式が用いるのは減算・絶対値・加算だけなので決定論的で O(1) であり、平方根や三角関数ライブラリを使いません。
実務でマンハッタン距離が現れる場面
中等・高等教育の離散幾何の授業では、都市格子上に描いた二点のタクシー距離を繰り返し求めます。厳密な数値チェック付きの信頼できる計算機は宿題採点を速め、絶対値を忘れたり L1 をユークリッドの斜辺と混同したりする表計算ミスを除きます。
ゲーム・グラフィックス・経路探索のチュートリアルはスプライトやノードをタイル座標の対として保存することが多く、マンハッタンの答えは完全なナビメッシュを組まずに A-star ヒューリスティック、移動予算、到達判定に使われます。
通路を既に軸平行ブロックとしてモデル化した物流・倉庫レイアウトツールは、移動コストを報告する前に二隅セグメントのブロック長を必要とします。共有の数値オラクルがあれば現場メモと事務スクリプトを同じ L1 経路に揃えます。
データと分析のチームは文書例や合成ベンチマーク用に決定論的な幾何フィクスチャが必要なことがあり、四座標・差分・絶対成分・method 文字列をエコーすると自己説明的になります。後でユークリッド直線距離、チェビシェフ距離、地球上の大円距離が必要なら、このタクシー向けランディングを過負荷にせず別の検索意図として扱ってください。
活用例
宿題・試験の確認
描いた二点間のタクシー幾何 L1 距離を計算し、非数値座標を明確なエラーで拒否します。
格子経路探索の補助
タイル座標の二対をマンハッタン長に変換し、A-star ヒューリスティック、移動予算、到達判定に使います。
街区の物流セグメント
軸平行の両端点から、道路格子上の移動コスト報告前にブロック経路長を求めます。
よくある質問
この計算機はどの公式を使いますか?
マンハッタン(タクシー幾何 / L1)公式:distance = |x2 − x1| + |y2 − y1|。応答には method: "manhattan" が含まれます。
ユークリッド距離とどう違いますか?
ユークリッド距離は直線の斜辺 √((x2−x1)²+(y2−y1)²) です。マンハッタン距離は軸方向の絶対ステップの和で、同一点対では常にユークリッド長以上です。
マンハッタン距離はどんな場面で使いますか?
街の区画、ゲームのマス目、倉庫の通路など、斜めに進めない格子の上で使います。A スターによる経路探索の見積もりや移動量の上限、射程の判定に役立ち、離散幾何の定番の問題でもあります。
2点の順番を入れ替えると結果は変わりますか?
変わりません。距離は2点を入れ替えても同じで、負になることはなく、2点が一致するときだけゼロになります。符号付きの差は符号が逆になりますが、絶対値は同じです。
座標に数でない値を入れるとどうなりますか?
どの座標がおかしいかを示すメッセージとともに受け付けません。空欄や文字、無限大などが、計算できたように見える結果として返ることはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geom/manhattan-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"x2":3,"y2":4}'const res = await fetch("https://api.kit.forhosting.com/geom/manhattan-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"x2": 3,
"y2": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/manhattan-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"x2": 3,
"y2": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/manhattan-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"x2":3,"y2":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"x2":3,"y2":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/manhattan-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x1": 0,
"y1": 0,
"x2": 3,
"y2": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.manhattan_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本計算機は x1、y1、x2、y2 を有限数として受け取り、各座標を検証し、非負の距離と正規化された点、符号付き差分 dx と dy、絶対成分 abs_dx と abs_dy、method タグ manhattan を返します。格子経路の宿題を確認する学生、軸平行の街路のみを動くゲームや経路探索ツール、街区の物流スケッチ、決定論的な幾何フィクスチャを必要とするテスト作者は、無料のブラウザツールと有料 API で同じ純粋な結果を得られます。欠落フィールド、空文字列、非数値テキスト、NaN、Infinity は、成功した求解に見える静かな NaN ではなく、明確な invalid_input エラーで拒否されます。ネットワーク呼び出しはなく、乱数サンプリングもなく、ご提供の四つの数に対する通常の IEEE-754 演算以外の浮動小数点の意外性もありません。
マンハッタン(タクシー幾何 / L1)公式が格子距離を測る仕組み
差が極端に大きいと大きな座標はなお IEEE-754 の double 範囲を溢れさせることがあり、和が非有限のときは JSON で Infinity を返す代わりに明確なオーバーフローメッセージで失敗します。この閉じた経路は離散幾何・格子上のロボティクス・計算幾何の入門がタクシー計量を扱う仕方と一致し、単位変換や地図投影を同じ呼び出しに混ぜずに、自動採点とパイプラインを手計算と揃えます。
送信する内容と返ってくる内容
必須の有限数を四つ指定してください。第一点の x1 と y1、第二点の x2 と y2 です。素早い健全性確認には無料のブラウザツールを接続し、各言語で数値ゲートを再実装せずマンハッタン距離の一括評価が必要なときはスクリプトから同一契約を呼び出してください。短い別名 ax、ay、bx、by、および x_a から y_b まで受け付け、フォームラベルをコンパクトにしつつハンドラの分岐を避けます。欠落フィールド、空文字列、非数値テキスト、NaN、Infinity は invalid_input で拒否され、課金されません。解析後、サービスは dx を x2 マイナス x1、dy を y2 マイナス y1 として計算し、abs_dx と abs_dy を取り、それらを distance に足し、距離が有限数であることを確認します。成功時の JSON 応答は安定した直列化のために丸めた distance を返し、正規化した四座標をエコーし、dx、dy、abs_dx、abs_dy を含め、ログや教育用 UI が計量を記録できるよう method を文字列 manhattan に設定します。例の確認:零、零、三、四は距離七;零、零、一、一は二;非数値の y2 はそのフィールド名で失敗します。契約は単体テスト、宿題チェッカー、点対を格子経路長へ写像するバッチパイプライン向けの安定 JSON です。API 価格は成功一件あたり公開ベースの $0.002 です。
実務でマンハッタン距離が現れる場面
本能力は純粋な parse エンジンのため、検証失敗は残高を消費せず、成功実行は一件あたり $0.002 のままです。
技術的な質問
座標が数値でない場合はどうなりますか?
リクエストは invalid_input で失敗します。欠落フィールド、空文字列、非数値テキスト、NaN、Infinity はすべて拒否されます。
点の順序は重要ですか?
いいえ。距離は対称です。二点を入れ替えても同じ非負の長さになります(dx と dy は符号が反転し、abs_dx と abs_dy は同じままです)。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API リクエストは前払い KIT 残高を成功一件あたり $0.002 で使用し、無効入力は課金されません。