Đầu vào
Đầu vào của bạn trong thử thách này là một danh sách các cặp số nguyên. Chúng đại diện cho các góc phía tây nam của hình vuông đơn vị trên mặt phẳng, và danh sách đại diện cho liên minh của chúng như là một tập hợp con của mặt phẳng. Ví dụ, danh sách
[(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)]
đại diện cho bộ màu đỏ trong hình này:
Đầu ra
Đầu ra Yor là một danh sách gồm bốn số nguyên, biểu diễn các tập con hình chữ nhật của mặt phẳng. (x,y,w,h)
Rõ ràng hơn, một bộ tứ sẽ lặp lại một hình chữ nhật có chiều rộng w > 0
và chiều cao h > 0
có góc phía tây nam (x,y)
. Các hình chữ nhật phải tạo thành một vùng bao phủ chính xác của khu vực đầu vào, theo nghĩa là mỗi hình vuông đơn vị là một tập hợp con của một số hình chữ nhật, mỗi hình chữ nhật là một tập hợp con của khu vực và hai hình chữ nhật chỉ có thể chồng lên nhau ở viền của chúng. Để cấm các giải pháp tầm thường, lớp phủ không được chứa hai hình chữ nhật có thể được hợp nhất thành một hình chữ nhật lớn hơn.
Ví dụ, danh sách
[(0,0,2,1),(0,1,3,1),(1,2,2,1)]
đại diện cho pháp luật
của khu vực trên, trong khi bao gồm
[(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)]
là bất hợp pháp, vì các ô vuông 1 cạnh 1 có thể được hợp nhất:
Quy tắc
Bạn có thể cung cấp một chương trình đầy đủ hoặc một chức năng. Định dạng chính xác của đầu vào và đầu ra không quan trọng, trong lý do. Số byte ngắn nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép. Bạn được khuyến khích cung cấp một lời giải thích về thuật toán của bạn và một số ví dụ đầu ra.
Các trường hợp thử nghiệm
Vùng hình chữ U:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)]
Một hình tam giác lớn:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)]
Một hình vuông có lỗ:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)]
Các khu vực bị ngắt kết nối:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)]
Trình xác minh
Sử dụng này chương trình Python 2 để xác minh giải pháp của bạn. Nó lấy từ STDIN một danh sách các bộ dữ liệu (đầu vào) và danh sách các bộ tứ (đầu ra của bạn), được phân tách bằng dấu phẩy.
Tôi cũng viết này chương trình Python 2 để tạo ra các hình ảnh, và bạn có thể sử dụng nó quá. Nó lấy từ STDIN một danh sách các bộ dữ liệu hoặc bộ tứ và tạo ra một tệp có tên out.png
. Nó đòi hỏi thư viện PIL. Bạn có thể thay đổi kích thước của các ô lưới và chiều rộng của các đường gird, nếu bạn muốn.