Thử thách này dựa trên một thử thách tương tự khác. Bởi vì việc tìm cách đóng gói hình chữ nhật hiệu quả nhất là NP-hard (nghĩa là giải pháp của nó rất dễ kiểm tra nhưng khó tìm), thử thách này dễ hơn rất nhiều so với thử thách này ở đây
Thử thách này
Đưa ra một loạt các hình chữ nhật, tìm hiểu xem chúng có lấp đầy một không gian hình chữ nhật không có khoảng trống hoặc chồng chéo hay không.
Đầu vào
Đầu vào có thể ở hai dạng, một trong số đó mang hình phạt ghi bàn.
Đầu tiên: nó chứa một danh sách các danh sách con, mỗi danh sách có độ dài 4. Danh sách này chứa 4 số nguyên là tọa độ của các đỉnh đối diện. Vì tất cả các hình chữ nhật sẽ nằm ngang / dọc, không có sự mơ hồ về vị trí của hình chữ nhật. Mỗi danh sách con sẽ chứa bốn số nguyên, theo thứ tự là tọa độ x của đỉnh thứ nhất, tọa độ y của đỉnh thứ nhất, tọa độ x của đỉnh thứ hai và tọa độ y của đỉnh thứ hai.
Thứ hai: nó chứa bốn danh sách các số nguyên có cùng độ dài. Bốn danh sách đại diện cho các tọa độ khác nhau. Nếu bạn tưởng tượng tùy chọn đầu vào 1 là một ma trận, thì đầu vào ở đây chỉ là chuyển vị của ma trận. Đầu vào này mang một +20%
hình phạt byte.
Đầu ra
Đơn giản đầu ra trung thực / giả.
Thông số kỹ thuật
Nếu có một hình chữ nhật có diện tích 0 (nghĩa là x1 == x2 || y1 == y2
), hãy bỏ qua hình chữ nhật này (như vậy [0 0 1 1], [2 2 3 2]
là hợp lệ). Đặc điểm kỹ thuật này được đưa ra để làm cho mọi người khó khăn hơn khi chỉ cần lấy các giá trị min / max x / y.
x1 <= x2
và y1 <= y2
không phải lúc nào cũng đúng Nếu x1 > x2 || y1 > y2
, hình chữ nhật không phải là hình chữ nhật có diện tích bằng không; đúng hơn, nó chiếm không gian hình chữ nhật giữa (x1, y1)
và (x2, y2)
.
Các tọa độ có thể âm, trong trường hợp chúng vẫn chiếm khoảng trống giữa các tọa độ.
Hình chữ nhật trên cùng bên trái không phải lúc nào cũng ở (0, 0)
; do đó, không gian hình chữ nhật được lấp đầy không nhất thiết phải có góc trên cùng bên trái tại (0, 0)
.
(Cảm ơn @xnor đã chỉ ra những điều mơ hồ này)
Vui lòng xác định cách bạn muốn đầu vào của bạn và cách đầu ra của bạn sẽ được thể hiện.
Chấm điểm
Điểm là kích thước của mã tính theo byte, cộng với hình phạt byte nếu có. Điểm thấp nhất tính đến ngày 15 tháng 12 chiến thắng.
Các trường hợp thử nghiệm
0 0 1 2
1 0 3 1 ==> true
1 1 3 2
0 0 2 2
0 0 1 1 ==> false
0 0 0 0
0 0 1 1
2 2 2 2 ==> true
0 1 2 1
Chúc may mắn, chơi golf vui vẻ!
x1 <= x2
và y1 <= y2
? Là một khu vực 0 hình chữ nhật với x1 == x2
và y1 <= y2
có thể?
x1 > x2
và y1 > y2
, đây có phải là hình chữ nhật có diện tích không vì tọa độ được chuyển đổi?