通常のグリッドのマンハッタン距離は、あるセルから別のセルに到達するために必要な直交ステップの数です。直交ステップは、グリッドセルの端を通るステップです(コーナーとは対照的に、チェビシェフ距離を与えます)。
他のグリッド、たとえば三角形のグリッドで同様の距離を定義できます。次のインデックススキームを使用して、グリッド内の個々のセルをアドレス指定できます。各セルにはx,y
ペアが含まれています。
____________________________________...
/\ /\ /\ /\ /\
/ \ 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\ /
\/______\/______\/______\/______\/___...
/\ /\ /\ /\ /\
. . . . . . . . . .
. . . . . . . . . .
ここで、このグリッドのマンハッタン距離は、1つのセルから別のセルに到達するためのエッジをまたぐ最小ステップ数です。したがって、3,1
から2,1
、4,1
またはに移動できますが3,2
、他の三角形には移動できません。これらの三角形はエッジではなく交差ポイントになるためです。
たとえば、から2,1
までの距離5,2
は4
です。通常、最短経路は一意ではありませんが、4つのステップで距離を設定する1つの方法は次のとおりです。
2,1 --> 3,1 --> 3,2 --> 4,2 --> 5,2
チャレンジ
2つの座標ペアを指定し、上記のアドレス指定スキームから、それらの間のマンハッタン距離を返します。x1,y1
x2,y2
4つすべての入力は、それぞれが128未満の非負の整数であると想定できます。任意の順序で任意にグループ化できます(4つの個別の引数、4つの整数のリスト、2つの整数のペア、2x2マトリックス、.. 。)。
プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。
任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。
これはcode-golfであるため、バイト単位で測定される最短の有効な回答が勝ちます。
テストケース
各テストケースはとして与えられます。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)
(c
4つの引数と0
5番目の引数で区切られたメソッドを呼び出す)。