Lý lịch
Tôi muốn xây dựng một hàng rào. Vì thế, tôi đã thu thập được một loạt các cực, và mắc kẹt chúng xuống đất. Tôi cũng đã thu thập rất nhiều bảng mà tôi sẽ đóng đinh vào các cột để làm hàng rào thực tế. Tôi có xu hướng bị mang đi khi xây dựng công cụ, và rất có thể tôi sẽ tiếp tục đóng các tấm ván vào cột cho đến khi không còn chỗ nào để đặt chúng nữa. Tôi muốn bạn liệt kê những hàng rào có thể mà tôi có thể kết thúc.
Đầu vào
Đầu vào của bạn là một danh sách các tọa độ nguyên hai chiều đại diện cho các vị trí của các cực, ở bất kỳ định dạng thuận tiện nào. Bạn có thể cho rằng nó không chứa các bản sao, nhưng bạn không thể thừa nhận bất cứ điều gì về thứ tự của nó.
Các bảng được thể hiện bằng các đường thẳng giữa các cực, và để đơn giản, chúng tôi chỉ xem xét các bảng ngang và dọc. Hai cực có thể được nối bởi một bảng nếu không có các cực hoặc bảng khác giữa chúng, có nghĩa là các bảng không thể giao nhau. Một sự sắp xếp các cực và bảng là tối đa nếu không có bảng mới nào có thể được thêm vào nó (tương đương, có một cực hoặc một bảng giữa bất kỳ hai cực theo chiều ngang hoặc dọc).
Đầu ra
Đầu ra của bạn là số lượng sắp xếp tối đa có thể được xây dựng bằng cách sử dụng các cực.
Thí dụ
Xem xét danh sách đầu vào
[(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)]
Nhìn từ trên xuống, sự sắp xếp các cực tương ứng trông giống như thế này:
o
o o
o o
o o
o
Có chính xác ba cách sắp xếp tối đa có thể được xây dựng bằng các cực này:
o o o
o-o o|o o-o
o----o o||| o o| | o
o-o o|o o-o
o o o
Do đó, đầu ra chính xác là 3
.
Quy tắc
Bạn có thể viết một hàm hoặc một chương trình đầy đủ. 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,0),(1,1),(2,2)] -> 1
[(0,0),(1,0),(2,0)] -> 1
[(0,0),(0,1),(1,0),(1,1)] -> 1
[(1,0),(0,1),(-1,0),(0,-1)] -> 2
[(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] -> 3
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1)] -> 3
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1),(0,-1)] -> 4
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(0,-1),(2,2)] -> 5
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1),(0,-1),(2,2)] -> 8
(0,-2)
, bắt tốt. Thay đổi ngay bây giờ.