Giới thiệu
Các khoảng cách Hausdorff đo sự khác biệt giữa hai tập con của một không gian metric. Theo trực giác, một không gian số liệu chỉ là một số được thiết lập với chức năng khoảng cách tích hợp; trong thử thách này, chúng ta sẽ sử dụng các số tự nhiên với khoảng cách thông thường d(a, b) := abs(a - b)
. Khoảng cách Hausdorff giữa hai tập hữu hạn không rỗng A
và B
được cho bởi
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))
trong ký hiệu giống như Python. Khoảng cách Hausdorff có thể được tính bằng cách tìm phần tử trong A
đó khoảng cách đến phần tử gần nhất B
là tối đa và phần tử B
mà khoảng cách đến phần tử gần nhất A
là tối đa, sau đó lấy tối đa các khoảng cách này. Nói cách khác, nếu khoảng cách Hausdorff là d
, thì mọi phần tử A
nằm trong khoảng cách d
của một số phần tử B
và ngược lại.
Đầu vào
Đầu vào của bạn là một danh sách các số nguyên. Nó chỉ chứa các yếu tố 0,1,2,3
, trong đó biểu thị cho dù chỉ số nhất định của danh sách là một phần tử của không A
cũng không B
, chỉ có A
, chỉ B
, hoặc cả hai A
và B
. Ví dụ: đầu vào [0,1,1,0,2,3]
có nghĩa là A = {1,2,5}
và B = {4,5}
, nếu chúng ta sử dụng lập chỉ mục dựa trên 0 (điều này không có sự khác biệt, vì các số liệu của chúng tôi là bất biến dịch).
Đầu ra
Đầu ra của bạn là khoảng cách Hausdorff giữa A
và B
; trong ví dụ trên, nó là 3
. Nếu một trong hai thiết lập là trống, thì khoảng cách không được xác định và bạn sẽ trả về -1
.
Quy tắc
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm
[] -> -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
nó rất gần với một trong số đó B
, nhưng có những yếu tố B
rất xa A
(ví dụ: nếu A
là tập con của B
). Trong trường hợp đó, công thức ngắn là không chính xác.
max(max(min(d(a, b) for b in B) for a in A))
nên là đủ. Điều này là dod(a,b)
trả về giá trị tuyệt đối và do đó cả hai hàm max sẽ trả về cùng một số mỗi lần.