सुलभ कोशिकाएं

सुलभ कोशिकाएं

> प्रोग्रामिंग

इस एल्गोरिथम का उद्देश्य उन कोशिकाओं को खोजना है जो एक लीक किसी दिए गए सेल और पीएम की संख्या से शुरू हो सकती है।

इसके परिणामस्वरूप एक फ़ंक्शन एक सेल और एक संख्या को एक पैरामीटर के रूप में लेता है, और जो कोशिकाओं की एक सरणी लौटाएगा।

यदि आपको "getAccessibleCells" या "getReachableCells" फ़ंक्शंस, या किसी अन्य समान नाम के बारे में बताया जाता है, तो अब आप जानेंगे कि यह क्या है।

उपयोग

जिस क्षण से आप अपनी यात्राओं की योजना बनाना चाहते हैं, यह कार्य आवश्यक होगा।

उन कक्षों को जानना जहाँ आप जा सकते हैं, आपको उदाहरण के लिए, उस कक्ष को चुनने की अनुमति देता है जहाँ आपको कम से कम संभावित नुकसान होगा, या यह देखने के लिए कि आप अपने प्रतिद्वंद्वी को नुकसान पहुँचाने के लिए कहाँ जा सकते हैं।

कैश-कैश एल्गोरिथम (ले कैश-कैश) में इस एल्गोरिथ्म का विशेष रूप से उपयोग किया जाता है।

पहली विधियाँ

सिद्धांत

अपने आप में, सेल को एक्सेस करने योग्य बनाने के तरीके को लागू करना काफी सरल है। getPathLength का उपयोग करके मानचित्र पर प्रत्येक सेल की दूरी का परीक्षण करना सबसे आसान तरीका है।

लेकिन इस फ़ंक्शन की उच्च परिचालन लागत है। इसलिए मानचित्र के प्रत्येक कक्ष पर इसका उपयोग करें... आपके संचालन की खपत आसमान छू जाएगी।

थोड़ा बेहतर समाधान यह होगा कि पहले PM की सीमा के भीतर कोशिकाओं को खोजा जाए, फिर जांचें कि वे getPathLength के माध्यम से पहुंच योग्य हैं।

यदि ये दो समाधान व्यवहार्य हैं, तो उनकी एक परिचालन लागत है जो जल्दी ही उच्च हो जाती है।

यदि आप एक शुरुआती हैं और जिस समाधान पर हम चर्चा करने जा रहे हैं वह अभी भी थोड़ा जटिल लगता है, तो पहले इन समाधानों के लिए स्वतंत्र महसूस करें। खेल की शुरुआत में, जरूरी नहीं है कि आपके पास करने के लिए बहुत सारी गणनाएं होंगी, और निम्न स्तर पर, आपके पास एमपी की एक बड़ी राशि नहीं होगी। तो, आप इन समाधानों का उपयोग कर सकते हैं।

समस्या

इन विधियों के माध्यम से अपने सेल को एक्सेस करना परेशानी मुक्त होगा।

लेकिन पहली समस्या तब आती है जब आपके पीएम की संख्या बढ़ जाती है। वह जितना ऊँचा चढ़ेगा, निश्चित रूप से परीक्षण करने के लिए उतने ही अधिक वर्ग होंगे। सबसे खराब स्थिति में, यदि आप getPathLength के साथ पूरे मानचित्र को चलाते हैं, तो आपको "केवल" * लगभग * 4 मिलियन संचालन का बिल प्राप्त करना चाहिए।

यह कहने के लिए पर्याप्त है कि यह अन्य एल्गोरिदम जैसे कॉम्बोस, या डैमेज मैप के लिए उपलब्ध संचालन को बहुत कम कर देता है।

और अभी यह समाप्त नहीं हुआ है ! एक और समस्या है: आप लड़ाई में अकेले नहीं हैं। अपने विरोधियों के हमलों से खुद को बचाने में सक्षम होने के लिए आपको निश्चित रूप से अपने विरोधियों की पहुंच योग्य कोशिकाओं को प्राप्त करने की आवश्यकता होगी। और अगर विभिन्न लीक बल्बों को बुलाना शुरू करते हैं, तो गणना करने के लिए और भी अधिक सेल हैं।

संक्षेप में, यदि आप इन तरीकों से इस छोटी सी दुनिया की सुलभ कोशिकाओं की गणना करना शुरू करते हैं, तो यह आपको एक हाथ से कहीं अधिक महंगा पड़ेगा।

इस प्रकार, हम एक और विधि का उपयोग करते हैं, और अधिक प्रभावी: पड़ोसी से पड़ोसी पर जाएं!

पड़ोसी विधि

पूर्वापेक्षाएँ

सबसे पहले, "पड़ोसी" क्या है? एक कोशिका के पड़ोसी बस उसके आस-पास की कोशिकाएँ होती हैं। और हम स्पष्ट रूप से उन कोशिकाओं के बारे में बात कर रहे हैं जिनका एक सामान्य पक्ष है, वे कोशिकाएँ जो सीधे उनके बगल में हैं, न कि तिरछे।

इस प्रकार, नक्शे के कोनों में मौजूद कोशिकाओं का एक ही पड़ोसी है। किनारों पर कोशिकाओं में दो होते हैं। और बाकी सभी के पास चार हैं।

सबसे पहले आपको यह जानने की आवश्यकता होगी कि सेल के पड़ोसियों को कैसे प्राप्त किया जाए। कार्यों getCellX, getCellY और getCellFromXY का उपयोग करके, आप इन प्रसिद्ध पड़ोसियों को आसानी से निर्धारित कर सकते हैं।

एक बार जब आप सेल के पड़ोसियों को पुनर्प्राप्त कर सकते हैं, तो आपको यह निर्धारित करने की आवश्यकता है कि वह सेल "पास करने योग्य" है या नहीं। स्पष्ट रूप से, यदि कोशिका एक बाधा है या लीक है, तो आपका लीक उस पर आगे बढ़ने में सक्षम नहीं होगा।

यह जानने के लिए, आपको isObstacle, isEmptyCell, isLeek या getCellContent कार्यों की आवश्यकता होगी।

सिद्धांत

सिद्धांत वास्तव में काफी सरल है। भले ही प्रोग्रामिंग में शुरुआती के लिए सेट अप करना जरूरी नहीं है।

इसलिए आपका लीक एक सेल पर है, और इसमें स्थानांतरित करने के लिए एमपी की एक निश्चित संख्या है। यह वर्तमान में जिस सेल पर है वह 0 PM की दूरी पर है; अब तक तो सब ठीक है...

यदि आपके लीक में 1 एमपी है, तो यह कहाँ जा सकता है? ठीक है, अपने शुरुआती सेल के मुक्त पड़ोसियों पर।

क्या होगा यदि उसके पास 2 एमपी हों? इसलिए यह 1 पीएम के लिए अपने शुरुआती सेल के मुक्त पड़ोसियों पर जा सकता है। लेकिन 2 पीएम के लिए भी, प्रारंभिक सेल के मुक्त पड़ोसियों के मुक्त पड़ोसियों पर।

और इसी तरह...

<img src="https://i.ibb.co/7jdzBZr/Tuto-Cell-Accessible-Iteration.gif" alt="Tuto-Cell-Accessible - इटरेशन" बोर