Giriş
Hausdorff mesafe Bir metrik alan iki alt arasındaki fark ölçülür. Sezgisel olarak, bir metrik boşluk, yerleşik bir mesafe işlevine sahip olan sadece bir kısmıdır; Bu mücadelede, doğal sayıları normal mesafeden kullanacağız d(a, b) := abs(a - b)
. Haussdorf iki boş olmayan sonlu kümeler arasındaki mesafe A
ve B
verilir
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 benzeri gösterimde. Hausdorff mesafesi, A
en yakın elemana olan mesafenin B
maksimum olduğu elementin B
bulunması ve en yakın elemana olan mesafenin A
maksimum olduğu elementin hesaplanması ve daha sonra bu mesafelerin maksimumunun alınması ile hesaplanabilir. Hausdorff mesafe, başka bir deyişle, d
, daha sonra her eleman A
mesafesinde d
bir elemanın B
, ve tersi.
Giriş
Girişiniz tek bir tamsayı listesidir. Sadece elementleri içeren 0,1,2,3
listenin verilen endeks bir unsuru ne olup olmadığını delalet, A
ne de B
sadece A
tek B
veya her ikisi A
ve B
. Örneğin, girdi şu [0,1,1,0,2,3]
anlama gelir A = {1,2,5}
ve B = {4,5}
eğer 0 temelli indeksleme kullanıyorsak (farkımız yoktur, çünkü metriklerimiz çeviri değişmezdir).
Çıktı
Çıktınız arasındaki Hausdorff mesafedir A
ve B
; Yukarıdaki örnekte, öyle 3
. Herhangi bir ayar boşsa, mesafe tanımlanmaz ve geri dönersiniz -1
.
kurallar
Tam bir program veya bir fonksiyon yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklar izin verilmez.
Test Kılıfları
[] -> -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
çok yakın olduğu söylenebilir B
, ancak B
çok uzak olan unsurlar vardır A
(örneğin, eğer A
bir altkümesi varsa B
). Bu durumda, kısa formül yanlış.
max(max(min(d(a, b) for b in B) for a in A))
yeterli olması gerektiği gibi çok uzun olduğuna inanıyorum . Bunun nedenid(a,b)
mutlak değeri verir ve bu nedenle her iki maksimum fonksiyon her seferinde aynı sayıyı döndürür.