Những hình chữ nhật này có thể lấp đầy một không gian hình chữ nhật?
Cho một loạt các hình chữ nhật, bạn được hỏi liệu chúng có thể được sắp xếp để lấp đầy một không gian hình chữ nhật hay không.
Thông số kỹ thuật
Cho một loạt các m x n
hình chữ nhật tùy ý ; 0 <= m, n <= 1000
, xác định xem có thể sắp xếp chúng sao cho chúng bao phủ chính xác một khu vực hình chữ nhật mà không có bất kỳ lỗ hổng hoặc chồng chéo. Các hình chữ nhật không thể được xoay và mỗi hình chữ nhật chỉ có thể được đặt một lần.
Đầu vào
Đầu vào cho điều này rất linh hoạt, miễn là đầu vào đưa ra một số loại danh sách các kích thước 2 không gian. Ví dụ: cả hai điều sau đây đều hợp lệ:
Tách biệt bởi không gian, trở về
1 2
1 5
4 5
3 6
Danh sách kích thước
[[1, 2], [1, 5], [4, 5], [3, 6]]
Đầu ra
Bất kỳ loại giá trị đúng / sai nào như true / false, 0/1, T / F, True / false, v.v. Nếu bạn sẽ sử dụng một phương thức đầu ra không rõ ràng, vui lòng ghi rõ trong câu trả lời của bạn.
Ví dụ
Trường hợp kiểm tra 1
Đầu vào:
1 1
1 5
2 6
Đầu ra:
true
(hoặc một cái gì đó tương tự)
Cách sắp xếp nó:
XYYYYY
ZZZZZZ
ZZZZZZ
Trường hợp thử nghiệm 2
Đầu vào:
1 1
2 2
Đầu ra:
false
(hoặc một cái gì đó tương tự)
Giải thích: Rõ ràng là bạn không thể sắp xếp hai hình vuông có kích thước khác nhau và sắp xếp các cạnh của chúng thẳng hàng.
Trường hợp thử nghiệm 3
Đầu vào:
1 1
1 2
1 2
2 1
2 1
Đầu ra:
true
(hoặc một cái gì đó tương tự) Cách sắp xếp nó:
AAB
DEB
DCC
Như @ETH Productstions đã chỉ ra, đối với tất cả các trường hợp thử nghiệm khác, bạn có thể tiếp tục kết hợp các hình chữ nhật với độ dài cạnh chung cho đến khi bạn chỉ có một hình chữ nhật, vì vậy trường hợp thử nghiệm này chỉ là để phá vỡ bất kỳ mã nào sử dụng ý tưởng này.
Trường hợp thử nghiệm 4
Đầu vào:
3 2
4 1
2 1
4 1
2 1
5 2
3 2
1 4
3 2
2 1
2 1
1 1
5 1
Đầu ra:
true
(hoặc một cái gì đó tương tự)
Cách sắp xếp nó:
AAABBBBEE
AAACCDDDD
FFFFFGGGH
FFFFFGGGH
IIIJJKKLH
IIIMMMMMH
Lưu ý : Bạn không cần nêu cách sắp xếp nó, bạn chỉ cần xác định xem có thể sắp xếp được không.
Đây là mã golf, vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng! Tôi sẽ chấp nhận câu trả lời ngắn nhất kể từ ngày 14 tháng 1, nhưng vui lòng gửi câu trả lời muộn hơn vì tôi vẫn có thể từ bỏ! :)
Chúc bạn chơi golf vui vẻ!
~ AL
PS Nếu bạn biết nên áp dụng thẻ nào cho vấn đề này, vui lòng thêm nó, tôi hoàn toàn không biết nên đặt thẻ nào ngoài thẻ golf.
EDIT : Chương trình của bạn sẽ có thể xử lý tối đa 25 hình chữ nhật, trong tối đa 10 giây trên một máy tính đàng hoàng (tôi sẽ khá linh hoạt theo quy tắc này).
EDIT : Tôi đã gia hạn thời hạn chấp nhận gửi đến ngày cuối cùng của năm, nhưng tôi nghi ngờ tôi sẽ nhận được câu trả lời vào lúc đó ...
EDIT : Tôi đã gia hạn thời hạn chấp nhận gửi thêm 2 tuần, vì vậy nếu sau đó không có câu trả lời nào nữa, câu trả lời C hiện tại sẽ được chấp nhận! :)
[[1, 2], [2, 1], [1, 1], [1, 2], [2, 1]]
(có thể được sắp xếp ABB ACD EED
). Bạn có thể muốn thêm trường hợp thử nghiệm đơn giản này.