Tuyên bố miễn trừ trách nhiệm: Câu chuyện được kể trong câu hỏi này hoàn toàn hư cấu và được phát minh chỉ nhằm mục đích cung cấp phần giới thiệu.
Tôi có một người bạn là một kiến trúc sư, và sau khi giải thích khái niệm về môn đánh gôn và trang web này với anh ta, anh ta nói rằng tôi nên viết một cái gì đó thực sự hữu ích cho một sự thay đổi. Tôi hỏi anh ta những gì anh ta cho là hữu ích, và, là một kiến trúc sư, anh ta trả lời rằng anh ta sẽ thích có một kế hoạch sàn cho anh ta tất cả các sắp xếp có thể cho các phòng có kích thước nhất định trong một ngôi nhà có kích thước nhất định. Tôi nghĩ rằng tôi sẽ chứng minh rằng golf-code hoàn toàn không vô dụng, và đưa cho anh ta chương trình này với số byte nhỏ nhất có thể.
Nhiệm vụ của bạn:
Viết chương trình hoặc chức năng, khi được cung cấp một mảng D chứa các kích thước của toàn bộ ngôi nhà và một mảng R thứ hai chứa các kích thước của các phòng bên trong, xuất ra dưới dạng nghệ thuật ASCII, tất cả các cấu hình có thể có của các phòng trong nhà.
Tất cả các phòng và các bức tường bên ngoài của ngôi nhà nên được hình thành dưới dạng hộp ASCII tiêu chuẩn, sử dụng | biểu tượng cho các bức tường thẳng đứng, biểu tượng - là các bức tường ngang và biểu tượng + cho các góc. Ví dụ: một ngôi nhà có kích thước [4,4] sẽ trông như sau:
+----+
| |
| |
| |
| |
+----+
Như bạn có thể thấy, các góc không được tính là một phần của tập hợp các kích thước. Số lượng - hoặc | các ký tự tạo thành một bên phải bằng số được cho trong các kích thước. Phòng có thể chia sẻ tường, hoặc chia sẻ tường với ngôi nhà. Một căn phòng có thể không chứa các phòng nhỏ hơn trong chính nó.
Ví dụ: cấu hình
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
có giá trị cho D = [5,8] và R = [[2,2], [2,3]].
Đầu vào:
Hai mảng, một trong số đó chứa hai số nguyên, kích thước cho ngôi nhà và một trong số đó chứa một loạt các mảng chứa kích thước cho các phòng.
Đầu ra:
Hoặc là một mảng của tất cả các ngôi nhà có thể là chuỗi hoặc chuỗi chứa tất cả các ngôi nhà có thể, được phân định theo một cách nhất quán. Lưu ý rằng các phép quay của cùng một cấu hình chính xác chỉ nên được tính một lần.
Các trường hợp thử nghiệm:
D R -> Output
[4,3] [[2,1],[4,1]] -> +-+-+ +-+-+ +-+-+ Note that though there is an option to switch which side the [2,1] room and the [4,1] room are on, doing so would merely be rotating the house by 180 degrees, and therefore these possibilities do not count.
| | | +-+ | | | |
+-+ | | | | | | |
| | | | | | +-+ |
| | | +-+ | | | |
+-+-+ +-+-+ +-+-+
[4,7] [[3,1],[4,2],[2,2] -> +----+--+ +----+--+ +----+--+ +----+--+ There are some more possiblities I didn't feel like adding, but it's the same four again, just with the [4,2] and the [2,2] room switched.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
Ghi điểm:
Đây là môn đánh gôn , điểm số thấp nhất tính bằng byte!
D = [4,2]
Nhưng nhà của bạn [4,3]
thì không?