पृष्ठभूमि
छड़ की (बंद) श्रृंखला पर विचार करें, जिनमें से प्रत्येक में पूर्णांक लंबाई है। किसी दिए गए श्रृंखला के साथ आप कितने अलग-अलग छेद-मुक्त पॉलोमिनोइन बना सकते हैं? या दूसरे शब्दों में, धुरी-संरेखित पक्षों के साथ कितने अलग-अलग गैर-स्व-प्रतिच्छेद वाले बहुभुज आप किसी दिए गए श्रृंखला के साथ बना सकते हैं?
आइए एक उदाहरण देखें। एक विशेष श्रृंखला पर विचार करें जिसमें लंबाई 1 और 2 की 8 छड़ें होती हैं, जिसे हम इस रूप में दर्शा सकते हैं [1, 1, 2, 2, 1, 1, 2, 2]
। रोटेशन और अनुवादों तक, केवल 8 संभव पॉलीओमीनो हैं (हम विभिन्न प्रतिबिंबों की गणना करते हैं):
यह पहली छड़ गहरे नीले रंग की होती है, और फिर हम बहुभुज को काउंटर-क्लॉकवाइज अर्थों में पार कर लेते हैं।
रोटेशन की भावना उपरोक्त उदाहरण में परिणाम को प्रभावित नहीं करती है। लेकिन आइए एक और श्रृंखला पर विचार करें [3, 1, 1, 1, 2, 1, 1]
, जो निम्नलिखित 3 पॉलीओमीनो की पैदावार देती है:
ध्यान दें कि हम अंतिम पॉलोमिनो का प्रतिबिंब शामिल नहीं करते हैं, क्योंकि इसके लिए दक्षिणावर्त ट्रैवर्सल की आवश्यकता होगी।
यदि हमारे पास समान लंबाई की अधिक लचीली श्रृंखला होती, तो [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
, हम वास्तव में कुछ अन्य पॉलीओनोइनो के बीच दोनों प्रतिबिंबों को बनाने में सक्षम होते, कुल 9:
चुनौती
एक श्रृंखला का विवरण, एक सरणी या इसी तरह के रूप में देखते हुए, छड़ का उपयोग करके (रोटेशन और अनुवाद के लिए) अलग polyominoes की संख्या आप फार्म कर सकते हैं निर्धारित क्रम में , जबकि एक वामावर्त अर्थ में परिधि के चारों ओर जा रहा है।
कृपया एक पूरा कार्यक्रम लिखें और कमांड लाइन से अपना कोड संकलित (यदि लागू हो) और अपना कोड शामिल करें। कृपया अपनी भाषा के लिए एक मुफ्त संकलक / दुभाषिया का लिंक भी शामिल करें।
आपके प्रोग्राम को STDIN से इनपुट पढ़ना चाहिए। पहली पंक्ति में एक पूर्णांक M होगा । अगली एम लाइनें परीक्षण के मामले होंगे, जिनमें से प्रत्येक रॉड की लंबाई वाली अंतरिक्ष-पृथक सूची होगी। आपके प्रोग्राम को M लाइनों को STDOUT में प्रिंट करना चाहिए , जिनमें से प्रत्येक में एक पूर्णांक होता है - अलग-अलग पॉलीओमीनो की संख्या जो बन सकती है।
आपको केवल एक ही धागे का उपयोग करना चाहिए।
आपके प्रोग्राम को किसी भी समय 1 जीबी से अधिक मेमोरी का उपयोग नहीं करना चाहिए। (यह पूरी तरह से सख्त सीमा नहीं है, लेकिन मैं आपके निष्पादन योग्य मेमोरी उपयोग की निगरानी करूंगा, और किसी भी प्रक्रिया को मार सकता हूं जो लगातार 1 जीबी से अधिक का उपयोग करता है, या इसके ऊपर काफी स्पाइक्स होता है।)
पूर्व-संगणना की अत्यधिक मात्रा को रोकने के लिए, आपका कोड 20,000 बाइट्स से अधिक नहीं होना चाहिए, और आपको किसी भी फाइल को नहीं पढ़ना चाहिए।
आपको चुने गए विशिष्ट परीक्षण मामलों की ओर भी अनुकूलन नहीं करना चाहिए (जैसे कि उनके परिणामों को हार्डकोड करके)। यदि मुझे संदेह है कि आप करते हैं, तो मुझे नए बेंचमार्क सेट जनरेट करने का अधिकार सुरक्षित है। परीक्षण सेट यादृच्छिक हैं, इसलिए उन पर आपके कार्यक्रम का प्रदर्शन मनमाना इनपुट पर इसके प्रदर्शन के लिए प्रतिनिधि होना चाहिए। एकमात्र धारणा जिसे आप बनाने की अनुमति देते हैं, वह यह है कि रॉड की लंबाई का योग सम है।
स्कोरिंग
मैंने एन = 10, 11, ..., 20 छड़ों की श्रृंखला के लिए बेंचमार्क सेट प्रदान किए हैं । प्रत्येक परीक्षण सेट में 1 और 4 के बीच की लंबाई के साथ 50 यादृच्छिक श्रृंखलाएं होती हैं।
आपका प्राथमिक स्कोर सबसे बड़ा एन है , जिसके लिए आपका कार्यक्रम 5 मिनट के भीतर (मेरी मशीन पर, विंडोज 8 के तहत) पूरे परीक्षण सेट को पूरा करता है। टाई ब्रेकर उस परीक्षण सेट पर आपके कार्यक्रम द्वारा लिया गया वास्तविक समय होगा।
अगर कोई सबसे बड़ा परीक्षण सेट मारता है, तो मैं बड़े लोगों को जोड़ता रहूंगा।
परीक्षण के मामलों
अपने कार्यान्वयन की शुद्धता की जांच करने के लिए आप निम्नलिखित परीक्षण मामलों का उपयोग कर सकते हैं।
Input Output
1 1 0
1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 1 1 9
1 1 1 1 1 1 1 1 1 1 1 1 36
1 1 1 1 1 1 1 1 1 1 1 1 1 1 157
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 758
1 1 2 2 1 1 2 2 8
1 1 2 2 1 1 2 2 1 1 23
1 1 2 2 1 1 2 2 1 1 2 2 69
1 2 1 2 1 2 1 2 3
1 2 1 2 1 2 1 2 1 2 1 2 37
1 2 3 2 1 2 3 2 5
1 2 3 2 1 2 3 2 1 2 3 2 23
3 1 1 1 2 1 1 3
1 2 3 4 5 6 7 1
1 2 3 4 5 6 7 8 3
1 2 3 4 5 6 7 8 9 10 11 5
2 1 5 3 3 2 3 3 4
4 1 6 5 6 3 1 4 2
3 5 3 5 1 4 1 1 3 5
1 4 3 2 2 5 5 4 6 4
4 1 3 2 1 2 3 3 1 4 18
1 1 1 1 1 2 3 3 2 1 24
3 1 4 1 2 2 1 1 2 4 1 2 107
2 4 2 4 2 2 3 4 2 4 2 3 114
आप यहाँ इन के साथ एक इनपुट फ़ाइल पाते हैं ।
लीडरबोर्ड
User Language Max N Time taken (MM:SS:mmm)
1. feersum C++ 11 19 3:07:430
2. Sp3000 Python 3 18 2:30:181