現在位置から水平方向にAマイル、垂直方向にBマイル離れた地点に移動することを想像してください。または言い換えると、から(0, 0)
に移動します(a, b)
。あなたはどこまで旅行する必要がありますか?これは簡単な質問のように思えますが、答えはあなたが尋ねる人によって異なります。あなたがカラスであり、カラスが飛ぶように移動できる場合、移動距離はユークリッド距離になり(a, b)
ます。これは
sqrt(a^2 + b^2)
しかし、あなたが退屈な人間なら、それほど遠くまで歩きたくないので、タクシーに乗る必要があります。ほとんどのタクシーは、一般的に道路に留まろうとするため、目的地に向かって直線で運転することはありません。したがって、実際に移動する距離は、垂直距離と水平距離の合計になります。または、式は次のとおりです。
abs(a) + abs(b)
これはTaxicab Distanceと呼ばれます。この図は、2つの違いをうまく示しています。
に移動するため(6, 6)
に、カラスは緑の線の上を飛ぶことができ、これにより6 * sqrt(2)
約8.49の距離が得られます。タクシーは赤、青、または黄色の道を取ることができますが、すべて12になります。
これは私が尋ねている本当の質問につながります。カラスとタクシーの両方がポイントから出発し、ポイント(0, 0)
に移動する場合(a, b)
、タクシーの経路はどれくらい長くなりますか?または、より多くの数学の専門用語では、
2次元のベクトルが与えられた場合、ベクトルのnorm2とベクトルのnorm1の差を求めます。
この質問に答えるには、最短のプログラムまたは関数を作成する必要があります。「a」と「b」を2つの別々の入力として、または2つのアイテムのタプルとして選択できます。任意の適切な形式で入力および出力を取得できます。差が整数でない場合は、少なくとも小数点以下2桁まで正確である必要があります。
「a」と「b」は整数であり、両方とも0にはならないことを常に想定できます(ただし、どちらかがゼロになる可能性はあります)
いつものように、標準の抜け穴が適用され、プログラムをバイト単位で可能な限り短くしようとします。
コードがどのように機能するかについての説明を投稿し、バイトを節約するために使用されるクールなトリックを実証する回答を支持します。
コードをテストするための例を次に示します。
#input #output
3, 4 2
-3, 4 2
-3, -4 2
6, 6 3.51
42, 0 0
10, 10 5.86
3, 3 1.76
ゴルフをお楽しみください!:)
10,10
5.86である必要があると思います。なぜなら、それが出てきて5.85786...
、その下のテストケースを丸めたからです。