डिस्क्लेमर: इस सवाल के भीतर बताई गई कहानी पूरी तरह से काल्पनिक है, और इंट्रो प्रदान करने के उद्देश्य से पूरी तरह से आविष्कार की गई है।
मेरा एक दोस्त है जो एक वास्तुकार है, और, कोड-गोल्फ की अवधारणा और उसे इस साइट की व्याख्या करने के बाद, उन्होंने कहा कि मुझे कुछ बदलाव के लिए वास्तव में उपयोगी कोड चाहिए। मैंने उनसे पूछा कि वह क्या उपयोगी मानेंगे, और, एक वास्तुकार होने के नाते, उन्होंने जवाब दिया कि वह एक फर्श योजनाकार होने का आनंद लेंगे जिसने उन्हें एक निश्चित आकार के घर के भीतर कुछ निश्चित आकार के कमरों के लिए सभी संभव व्यवस्थाएं दीं। मुझे लगा कि मैं साबित करूंगा कि कोड-गोल्फ सब के बाद बेकार नहीं था, और उसे यह कार्यक्रम सबसे कम संख्या में बाइट्स में संभव था।
आपका कार्य:
एक प्रोग्राम या फ़ंक्शन लिखें, जब पूरे घर के आयामों वाले एक सरणी डी दिया जाता है, और एक दूसरा सरणी आर जिसमें आंतरिक कमरों के आयाम होते हैं, एएससीआईआई कला के रूप में आउटपुट, घर के अंदर कमरों के सभी संभव कॉन्फ़िगरेशन।
घर के सभी कमरों और बाहरी दीवारों का उपयोग मानक ASCII बक्से के रूप में किया जाना चाहिए | ऊर्ध्वाधर दीवारों के लिए प्रतीक, - क्षैतिज दीवारों के रूप में प्रतीक, और कोनों के लिए + प्रतीक। उदाहरण के लिए, [4,4] आयाम वाला एक घर ऐसा दिखेगा:
+----+
| |
| |
| |
| |
+----+
जैसा कि आप देख सकते हैं, कोनों को आयामों के एक सेट के भाग के रूप में नहीं गिना जाता है। की संख्या - या | साइड बनाने वाले वर्णों को आयामों में दी गई संख्या के बराबर होना चाहिए। कमरे दीवारें साझा कर सकते हैं, या घर के साथ दीवारें साझा कर सकते हैं। एक कमरे में छोटे कमरे नहीं हो सकते।
उदाहरण के लिए, कॉन्फ़िगरेशन
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
D = [5,8], और R = [[2,2], [2,3]] के लिए मान्य है।
इनपुट:
दो सरणियों, जिनमें से एक में दो पूर्णांक होते हैं, घर के लिए आयाम और जिनमें से दूसरे में सरणियों की एक श्रृंखला होती है, जिसमें कमरों के लिए आयाम होते हैं।
आउटपुट:
या तो तार के रूप में सभी संभव घरों की एक सरणी, या सभी संभव घरों से युक्त एक स्ट्रिंग, कुछ सुसंगत तरीके से सीमांकित। ध्यान दें कि सटीक समान कॉन्फ़िगरेशन के घुमाव केवल एक बार गिने जाने चाहिए।
परीक्षण के मामलों:
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.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
स्कोरिंग:
यह कोड-गोल्फ है , बाइट्स जीत में सबसे कम स्कोर!
D = [4,2], लेकिन आपका घर है [4,3], है ना?