समस्या
आयताकार बोर्ड को एनोटेट करें। एक स्टार (*) एक माइन है और एक डॉट (.) एक सुरक्षित सेल है। प्रत्येक सुरक्षित सेल के लिए, आठों आस-पास की कोशिकाओं (डायगोनल सहित) में माइन की गिनती करें। यदि गिनती 1 से 8 के बीच है तो उसे उस संख्या से बदलें, और यदि गिनती शून्य है तो डॉट को वैसा ही रहने दें। हर माइन को जस का तस रखें। बोर्ड के बाहर की कोशिकाएँ अस्तित्व में नहीं मानी जाएँगी।
minesweeper_neighbor_counts(board) को इम्प्लीमेंट करें।
इनपुट
board: ऊपर से नीचे तक पंक्तियाँ; अक्षर बाएँ से दाएँ चलते हैं।
आउटपुट
एनोटेट की गई पंक्तियाँ उसी क्रम और आकार में लौटाएँ।
सीमाएँ
1 ≤ पंक्तियाँ, कॉलम ≤ 200। हर पंक्ति की लंबाई समान और शून्य से अधिक है तथा केवल * और . ही शामिल हैं।
उदाहरण
इनपुट:
board = ["*..", "...", "..*"]
अपेक्षित आउटपुट:
expected = ["*1.", "121", ".1*"]
इनपुट:
std::vector<std::string> board = {"*..", "...", "..*"};
अपेक्षित आउटपुट:
std::vector<std::string> expected = {"*1.", "121", ".1*"};
इनपुट:
string[] board = new string[] {"*..", "...", "..*"};
अपेक्षित आउटपुट:
string[] expected = new string[] {"*1.", "121", ".1*"};
व्याख्या
बीच वाला सेल दोनों माइन को छूता है, इसलिए उसकी गिनती 2 है। ऊपर-दाएँ और नीचे-बाएँ कोई माइन नहीं छूते, इसलिए वे डॉट ही रहते हैं। अन्य सुरक्षित सेल एक माइन को छूते हैं।
इनपुट:
board = ["..."]
अपेक्षित आउटपुट:
expected = ["..."]
इनपुट:
std::vector<std::string> board = {"..."};
अपेक्षित आउटपुट:
std::vector<std::string> expected = {"..."};
इनपुट:
string[] board = new string[] {"..."};
अपेक्षित आउटपुट:
string[] expected = new string[] {"..."};
व्याख्या
यह एक-पंक्ति वाला बोर्ड है जिसमें कोई माइन नहीं है। सभी गिनतियाँ शून्य हैं, इसलिए हर डॉट डॉट ही रहता है।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
सिर्फ safe cells बदलते हैं; mines अपनी जगह पर वैसे ही रहते हैं।
संकेत 2
हर dot के लिए आसपास के आठों positions देखो और nearby mines गिनो।
संकेत 3
Edges और corners के पास बाहर read न हो जाए, इसका ध्यान रखो।
अपेक्षित जटिलता
समय O(r*c), अतिरिक्त स्थान O(r*c)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।