前書き
ハウスドルフ距離は、距離空間の2つのサブセットの間の差を測定します。直観的には、距離空間は組み込みの距離関数を備えた単なるセットです。この課題では、通常の距離の自然数を使用しますd(a, b) := abs(a - b)
。二つの非空有限集合間のハウスドルフ距離A
とB
によって与えられます。
max(max(min(d(a, b) for b in B) for a in A),
max(min(d(a, b) for a in A) for b in B))
Pythonのような表記法で。ハウスドルフ距離がの要素見つけることによって計算することができるA
そのための最も近い要素までの距離がB
最大との要素であるB
の最も近い要素にする距離A
最大であり、そして、これらの距離の最大値を取っています。ハウスドルフ距離が言い換えれば、d
後のすべての要素は、A
距離内にあるd
いくつかの要素のB
、およびその逆。
入力
入力は整数の単一リストです。それだけの要素が含まれ0,1,2,3
、リストの指定されたインデックスは、どちらの要素であるかどうかを意味し、A
でもB
、のみA
、のみB
、または両方A
とB
。たとえば、0から始まるインデックスを使用する場合、入力[0,1,1,0,2,3]
はA = {1,2,5}
andを意味しB = {4,5}
ます(メトリックは翻訳不変なので、違いはありません)。
出力
出力は、A
との間のハウスドルフ距離B
です。上記の例では、です3
。いずれかのセットが空の場合、距離は定義されていないため、を返し-1
ます。
ルール
完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
[] -> -1
[0] -> -1
[0,1,0] -> -1
[2,0,0,2] -> -1
[0,1,2,3] -> 1
[0,3,3,0,0,0,0,3] -> 0
[1,0,0,1,0,0,1,3,1] -> 7
[1,0,0,0,0,3,0,0,0,0,2] -> 5
[0,1,1,3,1,3,2,1,1,3,0,3] -> 2
[2,2,2,1,2,0,3,1,3,1,0,3] -> 3
[1,3,0,2,0,2,2,1,0,3,2,1,1,2,2] -> 2
[1,0,1,1,2,0,1,2,3,1,0,0,0,1,2,0] -> 4
A
いずれかに非常に近いかもしれませんがB
、B
非常に遠い要素がある場合がありますA
(たとえば、A
のサブセットである場合B
)。その場合、短い式は正しくありません。
max(max(min(d(a, b) for b in B) for a in A))
ます。これはd(a,b)
、絶対値を返すため、両方のmax関数が毎回同じ数を返すためです。