पॉलीस्ट्रिप्स निम्नलिखित नियमों के अनुरूप पॉलीओमीनो का एक सबसेट हैं:
- प्रत्येक टुकड़े में 1 या अधिक कोशिकाएँ होती हैं
- किसी भी सेल में दो से अधिक पड़ोसी नहीं हो सकते
- कोशिकाओं में छेद नहीं होना चाहिए
जब किसी का कठोर रूपान्तरण (अनुवाद, परिक्रमण, परावर्तन या ग्लाइड परावर्तन) या किसी दूसरे के टुकड़े (जिसे ऊपर उठाया जा सकता है और फ़्लिप किया जा सकता है) से मुक्त पॉलीओमीनो भिन्न होते हैं। एक मुक्त पॉलीमिनो को प्रतिबिंबित करने, अनुवाद करने, प्रतिबिंबित करने या ग्लाइड करने से इसका आकार ( विकिपीडिया ) नहीं बदलता है
उदाहरण के लिए, 30 मुक्त हेप्टास्ट्रिप्स (लंबाई 7 के साथ पॉलीस्ट्रिप्स) हैं। यहां वे सभी हैं, जिन्हें 14x15 ग्रिड में पैक किया गया है।
लक्ष्य
एक प्रोग्राम / फ़ंक्शन लिखिए जो n
इनपुट के रूप में धनात्मक पूर्णांक लेता है और अलग-अलग फ्री- n
पॉलीस्टीरिप्स को एन्यूमरेट करता है ।
n = 1 -> 1 (एक वर्ग)
n = 2 -> 1 (2 वर्गों से बना केवल एक संभव 2-पॉलीस्ट्रिप है)
n = 3 -> 2 (एक पंक्ति में शामिल 3 वर्गों से बना है और दूसरा एक एल-आकार का है)
n = 4 -> 3 (एक सीधा, एक L- आकार और एक Z-आकार)
। । ।
परीक्षण के मामलों:
n polystrips
1 1
2 1
3 2
4 3
5 7
6 13
7 30
8 64
9 150
10 338
11 794
12 1836
13 4313
14 10067
15 23621
स्कोरिंग
यह कोड-गोल्फ है , इसलिए छोटा कोड बेहतर है। मैं एल्गोरिथ्म और कोड की विस्तृत व्याख्या की अत्यधिक सराहना करूंगा।
जे में आंशिक संदर्भ कार्यान्वयन
मैंने "वेक्टर" प्रारूप में प्रत्येक टुकड़े का वर्णन करने का निर्णय लिया और मुझे n-पॉलीस्ट्रिप टुकड़े का वर्णन करने के लिए केवल n-2 ब्लॉक की आवश्यकता है (केवल 1 2-पॉलीस्ट्रिप है और यह स्पष्ट रूप से वापस आ गया है)। ब्लॉक सापेक्ष दिशा का वर्णन करते हैं: 0 - कोई परिवर्तन नहीं; 1 - बाएं मुड़ें; 2 - दाएं मुड़ें। इससे कोई फर्क नहीं पड़ता कि कौन सी दिशा शुरू होगी लेकिन केवल यह इंगित करने के लिए कि अगली सेल कहां रखी जानी है। लगातार 0 s की कोई भी संख्या हो सकती है, लेकिन 1s और 2s हमेशा एकल होते हैं। यह कार्यान्वयन आंशिक है, क्योंकि यह छिद्रों के लिए जिम्मेदार नहीं है - n> 6 के लिए समाधान छेद के साथ टुकड़ों को भी गिनते हैं।
101010
आपके नमूना अंकन में)?