जैसा कि शीर्षक सुझाव दे सकता है, यह समस्या पोली नियर- साइटेड ड्रंक बॉट द्वारा @ एनपी द्वारा अर्ध-प्रेरित है
हमारे खराब बॉट को मूल में एक कार्टेशियन ग्रिड पर रखा गया है, और प्रत्येक मिनट के बाद, यह चार दिशाओं (ऊपर, नीचे, बाएं, दाएं) में से एक में 1 इकाई को स्थानांतरित करता है।
N मिनटों के बाद , ग्रिड पर अव्यक्त खानों के सभी सक्रिय होते हैं, किसी भी गरीब बॉट को मारते हैं जो खुद को उन पर पा सकते हैं। खानों को समीकरण को संतुष्ट करने वाले सभी पूर्णांक निर्देशांक पर स्थित हैं | y | = | x |
चुनौती
आपको एन प्रदान किया जाएगा , माइंस विस्फोट से पहले मिनटों की संख्या, एक इनपुट के रूप में, और आउटपुट के रूप में, आपको यह संभावना मिलनी चाहिए कि बॉट मर चुका है ।
इनपुट : एक प्राकृतिक संख्या का प्रतिनिधित्व n ।
आउटपुट : संभावना दें कि बॉट मर चुका है p / q, जहां p और q अपेक्षाकृत प्राइम पूरे नंबर हैं (q 0 नहीं हो सकता है, लेकिन p can)। आउटपुट पी।
नियम
- आपका एल्गोरिथ्म घातीय या उच्च समय में नहीं चलना चाहिए । यह आदर्श रूप से बहुपद या कम समय में चलना चाहिए।
- आपका एल्गोरिथ्म
n
उचित समय में <20 के इनपुट को संभालने में सक्षम (यदि बहुत कठिन हो तो समायोजित किया जा सकता है) होना चाहिए। - यह एक कोड-गोल्फ चुनौती है।
- किसी दिए गए n के लिए सभी संभावनाओं पर विचार करना निश्चित रूप से एक उत्तर के रूप में स्वीकार नहीं किया जाएगा।
परीक्षण के मामलों
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
उदाहरण एन = 6 के लिए गणना
हमारे पास 4 संभावित चालें हैं: यू, डी, आर, और एल। जो रास्ते ले सकते हैं उनकी कुल संख्या 4 ^ 6, या 4096 है। 4 संभावित मामले हैं जो लाइन y के साथ भूमि हैं = x: x, y = ± 1; x, y = ± 2; x, y = ± 3; या x = y = 0. हम (चतुर्थांश), (2,2), और (3,3) को समाप्त करने के तरीकों की संख्या की गणना करेंगे, अन्य चतुर्थांश के लिए उन्हें 4 से गुणा करेंगे, और जोड़ेंगे (0,0) पर समाप्त करने के तरीकों की संख्या के लिए यह।
केस 1: बॉट (3, 3) पर समाप्त होता है। बॉट को समाप्त करने के लिए, इसमें 3 सही मूव्स और 3 अप मूव्स होने चाहिए। दूसरे शब्दों में, यहां पहुंचने के तरीकों की कुल संख्या के क्रम में अक्षरों को फिर से व्यवस्थित करने के तरीके हैं RRRUUU, जो 6 है 3 = 20 चुनें।
केस 2: बॉट (2,2) पर समाप्त होता है। बॉट के लिए यहां समाप्त होने के लिए, इसमें 2 अप मूव, 3 राइट मूव और 1 लेफ्ट मूव हो सकता था; या 2 सही मूव, 3 अप मूव और 1 डाउन मूव। इस प्रकार, यहाँ प्राप्त करने के तरीकों की कुल संख्या क्रमों में अक्षरों को फिर से व्यवस्थित करने का योग है। आरआरआरएलयूयू और यूयूडीआरआर, दोनों में से (6 का चयन 1) * (5 का चयन 2) = 60, कुल 120 संभावनाओं के लिए। ।
केस 3: बॉट (1,1) पर समाप्त होता है। बॉट के लिए यहां समाप्त होने के क्रम में, यह हो सकता था: 1 सही चाल, 3 ऊपर की चाल और 2 नीचे की चाल। इस मामले में, अनुक्रम RUUUDD में अक्षरों को पुनर्व्यवस्थित करने के तरीकों की संख्या है (6 चुनें 1) * (5 चुनें 2) = 60।
1 अप मूव, 3 राइट मूव्स, और 2 लेफ्ट मूव्स। इस मामले में, URRRLL अनुक्रम में अक्षरों को फिर से व्यवस्थित करने के तरीकों की संख्या है (6 चुनें 1) * (5 चुनें 2) = 60।
2 राइट मूव, 1 लेफ्ट मूव, 2 अप मूव और 1 डाउन मूव। इस स्थिति में, UUDRRL में अक्षरों को फिर से व्यवस्थित करने के तरीकों की संख्या (6 चुनें 1) * (5 चुनें 1) * (4 चुनें 2) = 180 है।
इस प्रकार, (1,1) पर समाप्त होने के तरीकों की कुल संख्या 300 है।
केस 4: बॉट (0,0) पर समाप्त होता है। बॉट के लिए यहां समाप्त होने के क्रम में, यह हो सकता था:
3 दाईं चाल और 3 बाईं चाल। इस मामले में, अक्षरों को अनुक्रमित करने के तरीकों की संख्या RRRLLL है (6 चुन 3) = 20।
3 अप मूव्स और 3 डाउन मूव्स। इस मामले में, UUUDDD अनुक्रम में अक्षरों को फिर से व्यवस्थित करने के तरीकों की संख्या है (6 चुनें 3) = 20।
1 राइट मूव, 1 लेफ्ट मूव, 2 अप मूव और 2 डाउन मूव। इस स्थिति में, RLUUDD में अक्षरों को पुनर्व्यवस्थित करने के तरीकों की संख्या (6 चुनें 1) * (5 चुनें 1) * (4 चुनें 2) = 180 है।
1 अप मूव, 1 डाउन मूव, 2 राइट मूव और 2 लेफ्ट मूव्स। इस स्थिति में, RRLLUD में अक्षरों को पुनर्व्यवस्थित करने के तरीकों की संख्या (6 चुनें 1) * (5 चुनें 1) * (4 चुनें 2) = 180 है।
इस प्रकार, (0,0) पर समाप्त होने के तरीकों की कुल संख्या 400 है।
इन मामलों को एक साथ जोड़ने पर, हमें यह पता चलता है कि समाप्त होने के कुल तरीकों की संख्या | y | = | एक्स | 4 (20 + 120 + 300) + 400 = 2160 है। इस प्रकार, हमारी संभावना 2160/4096 है। जब यह अंश पूरी तरह से कम हो जाता है, तो यह 135/256 है, इसलिए हमारा उत्तर 135 है ।