pengantar
The Hausdorff jarak mengukur perbedaan antara dua himpunan bagian dari ruang metrik. Secara intuitif, ruang metrik hanya beberapa set dengan fungsi jarak built-in; dalam tantangan ini, kita akan menggunakan bilangan asli dengan jarak biasa d(a, b) := abs(a - b)
. Jarak Hausdorff antara dua set hingga tidak kosong A
dan B
diberikan oleh
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))
dalam notasi seperti Python. Jarak Hausdorff dapat dihitung dengan menemukan elemen A
yang jarak ke elemen terdekat B
maksimal, dan elemen B
yang jaraknya ke elemen terdekat A
maksimal, dan kemudian mengambil maksimum jarak ini. Dengan kata lain, jika jarak Hausdorff adalah d
, maka setiap elemen A
berada dalam jarak d
beberapa elemen B
, dan sebaliknya.
Memasukkan
Input Anda adalah satu daftar bilangan bulat. Ini hanya berisi elemen-elemen 0,1,2,3
, yang menandakan apakah indeks daftar yang diberikan adalah elemen yang bukan A
atau bukan B
, hanya A
, saja B
, atau keduanya A
dan B
. Misalnya, input [0,1,1,0,2,3]
berarti bahwa A = {1,2,5}
dan B = {4,5}
, jika kami menggunakan pengindeksan berbasis 0 (yang tidak membuat perbedaan, karena metrik kami adalah terjemahan invarian).
Keluaran
Output Anda adalah jarak Hausdorff antara A
dan B
; dalam contoh di atas, itu 3
. Jika salah satu set kosong, maka jaraknya tidak ditentukan, dan Anda akan kembali -1
.
Aturan
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
[] -> -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
sangat dekat dengan salah satunya B
, tetapi ada elemen yang B
sangat jauh dari A
(misalnya, jika A
merupakan subset dari B
). Dalam hal itu, rumus pendeknya salah.
max(max(min(d(a, b) for b in B) for a in A))
seharusnya sudah cukup. Ini karenad(a,b)
mengembalikan nilai absolut, dan karena itu kedua fungsi maks akan mengembalikan angka yang sama setiap waktu.