परिचय
पहेली के नियम:
पहेली बाइनरी (जिसे तकुज़ु या सुबिकू के रूप में भी जाना जाता है ) समझने में बहुत सरल है, और केवल कुछ नियम हैं:
चूंकि खेल का नाम द्विआधारी है यह बहुत स्पष्ट है, लेकिन आप केवल शून्य और लोगों में भर सकते हैं।
- एक ही अंक के दो से अधिक लंबवत या क्षैतिज रूप से एक दूसरे से सटे नहीं हो सकते हैं
- प्रत्येक पंक्ति और प्रत्येक कॉलम में एक समान मात्रा में शून्य और एक होना चाहिए (इसका अर्थ है कि प्रत्येक बाइनरी गेम में हमेशा समान आयाम होंगे)।
- कोई डुप्लिकेट पंक्तियाँ और कोई डुप्लिकेट किए गए कॉलम नहीं हो सकते हैं (शून्य और उसी के क्रम के साथ)।
आप www.binarypuzzle.com पर खेल खेल सकते हैं यदि आप चाहते हैं।
रणनीति:
नियम 1 के कारण, हम हमेशा एक अंक भर सकते हैं यदि:
- एक ही अंक के दो पहले से ही लंबवत या क्षैतिज रूप से एक दूसरे से सटे हुए हैं, जिस स्थिति में हम दोनों तरफ विपरीत अंक में भर सकते हैं। यानी .11...
→ 0110..
।
- एक ही अंक के दो लंबवत या क्षैतिज रूप से उनके बीच में केवल एक अंतर होता है। यानी .1.1..
→.101..
नियम 1 के कारण, जब तीन अंतराल बचे हैं और हमारे पास एक ही अंक के तीन आसन्न नहीं हो सकते हैं, तो हम अंतराल में से एक को भर सकते हैं। Ie .0.1.0
→ 10.1.0
(हमें अभी भी दो लोगों को भरना है, और हमारे पास बीच में तीन समीप वाले नहीं हो सकते हैं, इसलिए पहला अंतर एक होना चाहिए 1
।)
नियम 2 के कारण, हम हमेशा शेष अंतराल को एक पंक्ति या स्तंभ में भर सकते हैं यदि उनमें से आधा पहले से ही विपरीत अंक के साथ भरा हो। यानी .1.011
→010011
नियम 3 के कारण, हम हमेशा विपरीत अंकों को भर सकते हैं यदि केवल दो को समान रूप से आदेशित रेखा पर हल करने के लिए छोड़ दिया जाए। यानी 101100 & 1..100
→101100 & 110100
नियम 3 के कारण, हम कभी-कभी एक अंतराल में भर सकते हैं जब तीन अंतराल समान रूप से आदेशित रेखा पर छोड़ दिए जाते हैं। Ie 010011 & .1.01.
→ 010011 & .1.010
(यहां हम 1
अंत में नहीं भर सकते हैं , क्योंकि इसका मतलब है कि हमें अन्य दो अंतरालों पर शून्य में भरना होगा, दोनों पंक्तियों को समान क्रम में बनाना होगा।)
उदाहरण:
हम निम्नलिखित 6x6 ग्रिड के साथ शुरू करते हैं जिसमें कुछ और शून्य से भरे हुए हैं (और डॉट्स अंतराल हैं जिन्हें हमें अभी तक भरना है):
.1....
.10.0.
1.11..
.1....
...1.0
......
नियम 1 और 2 के कारण हम इन अंकों को भर सकते हैं:
.1.01.
.1010.
101100
010011
.0.1.0
.010..
नियम 1 के कारण हम पंक्ति 5, कॉलम 1 में 1 भर सकते हैं:
.1.01.
.1010.
101100
010011
10.1.0
.010..
नियम 3 के कारण हम पंक्ति 1, कॉलम 6 (जब पंक्ति 4 को देख रहे हैं) में 0 भर सकते हैं:
.1.010
.1010.
101100
010011
10.1.0
.010..
अब हम नियमों 1 और 2 के कारण अंकों के साथ अंतराल को भरना जारी रख सकते हैं:
.1.010
010101
101100
010011
10.1.0
.010.1
अब हम नियम 3 (जब पंक्ति 3 को देख रहे हैं) के कारण पंक्ति 5 को समाप्त कर सकते हैं:
.1.010
010101
101100
010011
100110
.010.1
और फिर हम नियम 1 और 2 के कारण पहेली को समाप्त कर सकते हैं:
011010
010101
101100
010011
100110
101001
चुनौती:
चुनौती बस है: शुरुआती ग्रिड को देखते हुए, हल की गई पहेली को आउटपुट करना।
नोट: आपको ऊपर दिए गए नियमों को लागू करने की आवश्यकता नहीं है। आप निश्चित रूप से कर सकते हैं, और यह आपको इस चुनौती को लागू करने के तरीके पर संकेत देना चाहिए, लेकिन नियमों के साथ समाधान को ध्यान में रखते हुए पूरी तरह से ठीक है।
आप इसे कैसे हल करते हैं यह आपके ऊपर है, लेकिन चुनौती हल की गई पहेली को आउटपुट करना है।
चुनौती नियम:
- ग्रिड के लिए इनपुट और आउटपुट प्रारूप लचीला है, लेकिन कृपया बताएं कि आप क्या उपयोग करते हैं। (यानी 2D बाइट-ऐरे; स्ट्रींग विद न्यूलाइन्स; आदि)
- यह ऊपर उपयोग किए गए वर्णों पर भी लागू होता है। उदाहरण में मैंने उपयोग किया है
01.
, लेकिन यदि आप चाहें तो आपABx
इसके बजाय उपयोग कर सकते हैं । कृपया बताएं कि आपके द्वारा उपयोग किए गए इनपुट / आउटपुट प्रारूप और वर्ण क्या हैं। - आप मान सकते हैं कि केवल निम्नलिखित ग्रिड आकारों का उपयोग किया जाएगा
6x6
:;8x8
;10x10
;12x12
;14x14
;16x16
।
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें। - मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा कॉल।
- डिफ़ॉल्ट लूपोल्स वर्जित हैं।
- यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
- इसके अलावा, यदि आवश्यक हो तो एक स्पष्टीकरण जोड़ें।
परीक्षण के मामलों:
डॉट्स केवल पठनीयता के लिए जोड़े जाते हैं, रिक्त स्थान का उपयोग करने के लिए स्वतंत्र महसूस करें या कुछ और जो आप अंतराल के लिए पसंद करते हैं। दोनों में और आउटपुट स्वरूप लचीला है।
Input:
1..0..
..00.1
.00..1
......
00.1..
.1..00
Output:
101010
010011
100101
011010
001101
110100
Input:
.1....
.10.0.
1.11..
.1....
...1.0
......
Output:
011010
010101
101100
010011
100110
101001
Input:
.......1..
.00..0..1.
.0..1..0.0
..1...1...
1.1......1
.......1..
.0..1...0.
....11...0
.0.0..1..0
0...0...1.
Output:
0110010101
1001100110
1001101010
0110011001
1010100101
0101010110
1001101001
0110110100
1010011010
0101001011