चुनौती
अब जब सांता आखिरकार समझ गया कि उसे अपने वर्तमान तिजोरी में कैसे जाना है, तो उसे पता चलता है कि किसी तरह से कल्पित बौने उसके सामने आ गए और उनके कुछ उपहार चुरा लिए! उन्हें समझ नहीं आया कि तिजोरी को कैसे छोड़ा जाए, हालांकि, सांता को कोशिश करनी चाहिए और उन सभी को पकड़ना चाहिए। सांता और कल्पित बौने दोनों के पास दौड़ने के लिए अनंत ऊर्जा है, लेकिन दुर्भाग्य से कल्पित बौनों में ऊर्जा की एक उच्च अनंतता है, इसलिए यदि वे छोरों में हर जगह चल रहे हैं, तो कल्पित बौने मुक्त हो गए हैं।
किसी भी दो नोड्स और सांता और सांता के पदों के बीच में चलने के साथ n
नोड्स और e
किनारों के ग्राफ को देखते हुए , निर्धारित करें कि थकने से पहले सांता कितने कल्पित बौने पकड़ सकता है।
पीछा बारी-बारी से होता है। प्रत्येक चक्र, कल्पित बौने पहले सभी एक साथ चलते हैं (वे एक-दूसरे के माध्यम से और उसी नोड पर भी स्थानांतरित कर सकते हैं), और फिर सांता चलेंगे। यदि सांता एक ही नोड पर एक योगिनी के रूप में चलता है, तो उसने उस योगिनी को पकड़ लिया है। प्रत्येक योगिनी एक चरण में केवल एक नोड से अपने पड़ोसी तक जा सकती है। वही शुरू में सांता के लिए चला जाता है, लेकिन हर योगिनी के लिए उसने पकड़ा है, सांता एक अतिरिक्त कदम उठा सकता है। इसलिए, यदि सांता ने एक योगिनी को पकड़ा है, तो वह एक नोड से अपने पड़ोसी के पड़ोसी के पास जा सकता है। इसका मतलब है कि वह एक नोड पर जा सकता है और फिर वापस आ सकता है। हालाँकि, चूंकि सांता इस समय अवधि के दौरान बहुत तेज़ी से भाग रहा है, वह मध्यवर्ती चरणों में गुजरने वाले किसी भी कल्पित बौने को नहीं पकड़ेगा (इसलिए यदि वह A पर है, A, B से जुड़ा है, B, C से जुड़ा है, तो एक योगिनी है बी, और सांता ए -> बी -> सी से चलता है, योगिनी अभी तक पकड़ा नहीं गया है)। हालाँकि, सांता को एक साथ कई कदम नहीं उठाने हैं; वह प्रत्येक मोड़ पर 1 + (पकड़े गए बछड़ों की संख्या) तक चलता है।
ध्यान दें कि सभी कल्पित बौने प्रत्येक मोड़ को स्थानांतरित करते हैं, और यदि एक योगिनी सांता के नोड पर चलती है, तो वे पकड़े जाते हैं।
सभी इकाइयां (कल्पित बौने, सांता) शुरुआत में अलग-अलग नोड्स पर होंगे।
विनिर्देशों और नियम
आपके कार्यक्रम को सैद्धांतिक रूप से किसी भी आकार के इनपुट के लिए काम करना चाहिए। इनपुट को एक ग्राफ, कल्पित बौने के पदों और सांता की स्थिति के रूप में दिया जाएगा। आप ग्राफ को किसी भी उचित प्रारूप (नोड्स की सूची + किनारों की सूची, किनारों की सूची, आसन्न मैट्रिक्स, चक्र संकेतन, आदि) में ले सकते हैं, और आप अपने ग्राफ़ इनपुट प्रारूप (सूचकांक) के साथ काम करने वाले किसी भी उचित प्रारूप में स्थितियां ले सकते हैं। नोड्स, आदि की सूची में)। आउटपुट एकल धनात्मक पूर्णांक होना चाहिए जो सांता को पकड़ने की अधिकतम संख्या को दर्शाता है।
परीक्षण के मामलों
इन्हें पदों के लिए किनारों और नोड संख्या की सूची के रूप में दिया गया है।
Input -> Output
[(0, 1), (1, 2)], [0, 2], 1 -> 2 # Easy win for Santa, the elves get themselves caught :P
[(0, 1), (1, 2), (2, 3), (3, 0)], [0, 1], 2 -> 2 # The elf opposite of Santa cannot escape but the other one can always just run away each turn, until Santa catches the first elf. Then he can easily just catch the rest.
[(0, 1), (1, 2), (2, 3), (3, 0)], [1], 0 -> 0 # Santa will never catch up
[(0, 1), (1, 2), (2, 3), (3, 0), (1, 4), (4, 5), ..., (10, 11), (11, 3)], [2, 6], 0 -> 2 # The first elf moves to either 1 or 3 and then gets caught. Then, Santa can use his 2-step move to catch up to the second elf no matter what.
मुझे लगता है कि या तो कोई सांता कल्पित बौने या सभी कल्पित बौने पकड़ कर सकते हैं, तो यह चुनौती सिर्फ हो सकता है "उन्होंने एक योगिनी पकड़ कर सकते हैं" संकेत संकेत
नियम
- स्टैंडर्ड लोफॉल्स लागू होते हैं
- यह है एक कोड गोल्फ चुनौती, बाइट्स में सबसे कम जवाब जीतता है
- कोई उत्तर स्वीकार नहीं किया जाएगा
हैप्पी गोल्फिंग!
नोट: मैंने इस चुनौती श्रंखला के लिए Advent of Code से प्रेरणा ली । मेरा इस साइट से कोई जुड़ाव नहीं है
आप यहां पहली चुनौती के 'लिंक्ड' सेक्शन को देखकर श्रृंखला की सभी चुनौतियों की सूची देख सकते हैं ।
1
कुछ गणितीय कथन साबित करें। 2
10 से कम बाइट्स में जेली (/ ...) उत्तर पोस्ट करें।