माइनस्वीपर एक लोकप्रिय कंप्यूटर गेम है जिसे आपने शायद खेलने में समय बर्बाद किया है, जहां आप उन आयतों को प्रकट करने की कोशिश करते हैं जो आयताकार ग्रिड में खानों हैं जो प्रत्येक गैर-खदान सेल में कितने पड़ोसी खानों के संकेत के आधार पर हैं। और अगर आपने इसे नहीं खेला है, तो यहां करें ।
एक माइनस्वीपर ग्रिड (उर्फ बोर्ड) के बारे में एक निफ़्टी गणितीय तथ्य यह है कि:
एक बोर्ड और उसके पूरक की कुल संख्या समान है । ( प्रमाण )
कहने का तात्पर्य यह है कि यदि आपके पास पूरी तरह से पता चला है कि माइनस्वीपर ग्रिड है, तो उस ग्रिड पर सभी संख्याओं का योग, अर्थात कुल खान , ग्रिड के पूरक की कुल खान के बराबर होगी, जो कि ग्रिड है जहां हर खदान को बदल दिया गया है। एक गैर-खदान के साथ और प्रत्येक गैर-खदान की जगह एक खदान के साथ।
उदाहरण के लिए, माइनस्वीपर ग्रिड के लिए
**1..
34321
*2**1
मेरा कुल 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17 है।
ग्रिड का पूरक है
24***
*****
3*44*
जिसमें मेरा कुल 2 + 4 + 3 + 4 + 4 = 17 फिर से है।
एक प्रोग्राम है जो पाठ के रूप में एक मनमाना माइनस्वीपर ग्रिड जहां में लेता लिखें *
और एक खदान का प्रतिनिधित्व करता है 1
के माध्यम से 8
एक गैर-माइन के निकट खानों की संख्या का प्रतिनिधित्व करते हैं। आप उपयोग कर सकते हैं .
या 0
या
(स्थान) कोई मेरा पड़ोसियों, अपनी पसंद के साथ कोशिकाओं प्रतिनिधित्व करते हैं। आप यह मान सकते हैं कि इनपुट ग्रिड को सही तरीके से चिह्नित किया जाएगा, अर्थात प्रत्येक गैर-खान सेल तुरंत खानों की कुल संख्या को सही रूप से निरूपित करेगा, जो इसे orthogonally या तिरछे से सटे हुए हैं।
(समान का उपयोग कर अपने कार्यक्रम उसी स्वरूप में ग्रिड के पूरक मुद्रित करने के लिए की जरूरत है .
, 0
या
के रूप में आप इनपुट में होने की उम्मीद)।
बाइट्स में सबसे छोटा कोड जीतता है।
- एक कार्यक्रम के बजाय आप एक फ़ंक्शन लिख सकते हैं जो इनपुट ग्रिड को स्ट्रिंग और प्रिंट के रूप में लेता है या पूरक ग्रिड को वापस करता है।
- इनपुट या आउटपुट में एक अनुगामी न्यूलाइन ठीक है, लेकिन ग्रिड बनाने वालों के अलावा कोई अन्य वर्ण नहीं होना चाहिए।
- आप मान सकते हैं कि 1 × 1 ग्रिड सबसे छोटा इनपुट होगा।
परीक्षण के मामलों
सभी इनपुट और आउटपुट को अदला-बदली किया जा सकता है क्योंकि सप्लीमेंट का मूल ग्रिड है। ग्रिड को आगे के परीक्षण के मामलों के लिए भी घुमाया जा सकता है।
इनपुट:
111
1*1
111
आउटपुट:
***
*8*
***
इनपुट:
.
आउटपुट:
*
इनपुट:
*11*1.1**1...1***1.....1*****1..........
आउटपुट:
1**2***11*****1.1*******1...1***********
इनपुट: ( कट द नॉट उदाहरण )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
आउटपुट:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
बोर्ड के अंतिम लाइन के स्वीकार्य होने के बाद लाइन पर एक अंतिम सीमांकक (उदाहरण के लिए ) का उपयोग किया जा रहा है, या मैं कमांड लाइन के माध्यम से इनपुट लाइनों की संख्या ले सकता हूं?