एक आयताकार द्वि-आयामी ग्रिड पर विचार करें जहां प्रत्येक कोशिका या तो खाली हो सकती है ( .) या पूर्ण ( 0)।
जैसे
..00....
0000....
.00000..
000...00
..000000
000.00..
ग्रिड को अनंत माना जाता है, चित्रित क्षेत्र के बाहर सभी कोशिकाएं खाली हैं।
लक्ष्य भरे हुए स्थानों को ढंकना है और खाली जगहों को 7 अलग-अलग आकार की ईंटों के सेट का उपयोग करके खुला छोड़ना है जो प्रत्येक ग्रिड के 4 कोशिकाओं (2 × 2) को लेते हैं।
ये 7 ईंटें हैं:
ब्लॉक - 1 संस्करण
11 11स्लैब - 2 वेरिएंट
.. 2233 ..सीढ़ियाँ - 4 प्रकार
.4 445. 5566 .677 7.
इन ईंटों को हमेशा एक ग्रिड से संरेखित करना चाहिए, जिनकी कोशिकाएँ इनपुट ग्रिड की कोशिकाओं की तुलना में दोगुनी चौड़ी और लंबी होती हैं। प्रत्येक ईंट केवल इस बड़े ग्रिड के एक सेल पर कब्जा कर सकती है लेकिन छोटे ग्रिड को कवर खोजने के लिए अधिक विकल्प देने के लिए बड़े ग्रिड के नीचे अनुवादित (ऊपर, नीचे, बाएं, दाएं) स्थानांतरित किया जा सकता है। न तो ग्रिड और न ही व्यक्तिगत ईंटों को घुमाया जा सकता है।
तो ऊपर दिए गए उदाहरण को कवर करने के लिए एक तरीका (उर्फ हल) इस प्रकार है:
..11....
2211....
.47733..
447...22
..771133
227.11..
(पहचान संबंधी पड़ोसी ईंटें अभी भी अस्पष्टता का कारण बन सकती हैं लेकिन बड़े ग्रिड को हल करने वाले ध्यान से पहचानती हैं।)
के लिए एक अवैध समाधान
000000
000000
है
566774
556744
क्योंकि ईंटें सभी बड़े ग्रिड से संरेखित नहीं होती हैं और न ही इसके एक सेल पर कब्जा होता है।
यहां एक मान्य समाधान पंक्ति में 3 ब्लॉक हैं:
111111
111111
और एक अन्य वैध समाधान में 6 स्लैब शामिल हैं:
......
222222
333333
......
तो ध्यान दें कि कुछ इनपुट ग्रिड में कई समाधान होते हैं ।
के लिए एक अवैध समाधान
00.00
00...
है
11.33
11...
क्योंकि ईंटें बड़े ग्रिड से संरेखित नहीं होती हैं। स्लैब को एक-एक करके बाएं या दाएं स्थानांतरित करना होगा, लेकिन तब निश्चित रूप से कवर अधूरा होगा। इस इनपुट ग्रिड का कोई हल नहीं है ।
चुनौती
एक प्रोग्राम है जो (stdin / कमांड लाइन के माध्यम से) में ले जाता है के पाठ की एक आयताकार ब्लॉक लिखें .की और 0की है कि एक ग्रिड को कवर किया जाना प्रतिनिधित्व करता है।
यदि कोई वैध कवरिंग समाधान है, तो ऊपर दिए गए तरीके से किसी भी एक समाधान को प्रिंट (stdout के माध्यम से) करें , सभी ईंटों के माध्यम से 0उपयुक्त की जगह ।17
यदि कोई समाधान नहीं है, तो आपके प्रोग्राम को कुछ भी आउटपुट नहीं करना चाहिए, बस चुपचाप सामान्य रूप से समाप्त हो जाना चाहिए।
टिप्पणियाँ
इनपुट और आउटपुट को समान आयताकार आयामों की आवश्यकता नहीं है। आपके आउटपुट में सभी प्रकार के असंगत पंक्तियाँ और / या स्तंभ हो सकते हैं
.(जब तक कि वे समाधान को अमान्य नहीं करते)।.यदि यह भरे हुए स्थान को प्रभावित नहीं करेगा, तो पंक्तियों और स्तंभों को ट्रिम करना भी ठीक है । जैसे222222 333333के लिए एक वैध समाधान है
000000 000000इसके विपरीत, दो खाली स्तंभों को
00..00हटाया नहीं जा सकता है क्योंकि भरे हुए रिक्त स्थान को अव्यवस्थित करेंगे।आप वैकल्पिक रूप से मान सकते हैं कि इनपुट में एक एकल अनुगामी न्यूलाइन है। आउटपुट में एक एकल अनुगामी न्यूलाइन ठीक नहीं है, यहां तक कि समाधान के मामले में भी।
ग्रिड जो पूरी तरह से खाली हैं (सभी
.के) और तुच्छ 0 × 0 ग्रिड ऐसे इनपुट मामले नहीं हैं जिनके बारे में आपको चिंता करने की आवश्यकता है। लेकिन 1 × 10ग्रिड है, जैसा कि अन्य सभी ग्रिड हैं जिनमें कम से कम एक है0। (आप इनपुट ग्रिड की चौड़ाई या ऊँचाई समान नहीं मान सकते हैं!)एक कार्यक्रम के बजाय आप एक फ़ंक्शन लिख सकते हैं जो इनपुट को एक स्ट्रिंग तर्क के रूप में लेता है और आउटपुट को सामान्य रूप से प्रिंट करता है या इसे स्ट्रिंग के रूप में लौटाता है। समाधान न होने पर किसी भी गलत मूल्य को लौटाया जा सकता है।
आप के स्थान पर किसी भी 9 अलग मुद्रण योग्य ASCII वर्ण का उपयोग कर सकते हैं
.01234567। बस यह कहना सुनिश्चित करें कि आपके विकल्प क्या थे! न्यूलाइन्स को वैसे ही रहना चाहिए।
स्कोरिंग
बाइट्स में सबसे छोटा कोड जीतता है। टाईब्रेकर सबसे अधिक मतदान वाला पद है।
यह चुनौती Minecraft में ब्लॉक , स्लैब और सीढ़ियों से प्रेरित थी , जो यहां वर्णित समान नियमों का पालन करते हैं। यदि आप PPCG और Minecraft का आनंद लेते हैं , तो आप PPCG Minecraft सर्वर की जांच कर सकते हैं ।