जब हम एक त्रिकोणीय ग्रिड किक पर होते हैं , तो मैं यह बताना चाहूंगा कि त्रिकोणीय ग्रिड पर पॉलीओमीनो के बराबर है । उन्हें पॉलीयमोंड कहा जाता है , और वे उनके किनारों के साथ समबाहु त्रिभुज को जोड़कर बनाई गई आकृति हैं। इस चुनौती में आप यह तय करने जा रहे हैं कि एक त्रिकोणीय ग्रिड के कौन से उप-समूह पॉलीमींड हैं, और क्या उनमें छेद हैं। क्योंकि यह केवल एक छेद के साथ एक पॉलीमीओन्ड बनाने के लिए 9 त्रिकोण लेता है, आपके कोड को यथासंभव छोटा होना चाहिए।
ग्रिड
हम इनपुट के लिए मार्टिन के त्रिकोणीय ग्रिड लेआउट का उपयोग करेंगे :
इस तथ्य पर ध्यान दें कि त्रिकोण के केंद्र मोटे तौर पर आयताकार ग्रिड बनाते हैं और शीर्ष बाएँ त्रिकोण "अंक" ऊपर की ओर होते हैं। हम इस ग्रिड के सबसेट का वर्णन कर सकते हैं, फिर, एक आयताकार "स्टार मैप" देकर यह दर्शाता है कि कौन से त्रिकोण शामिल हैं और जो शामिल नहीं हैं। उदाहरण के लिए, यह नक्शा:
** **
*****
सबसे छोटे पॉलीमोंड से मेल खाता है जिसमें एक छेद होता है:
छेद
एक पॉलियामंड जिसमें ऊपर के उदाहरण जैसा एक छेद होता है (एक क्षेत्र जो पॉलीयमोंड का हिस्सा नहीं है, जो कि सभी क्षेत्रों से घिरा हुआ है जो कि हैं ), टोपोलॉजिकली बोलना, बस जुड़ा हुआ नहीं है ।
चुनौती
एक फ़ंक्शन या प्रोग्राम लिखें जो इनपुट के रूप में "स्टार मैप" के रूप में ऊपर वर्णित है और एक सत्य का उत्पादन करता है यदि और केवल अगर त्रिकोणीय ग्रिड के संकेतित सबसेट एक कनेक्टेड पॉलीमीओन्ड है ।
और ज्यादा उदाहरण
*** ***
*******
पॉलीमोंड से मेल खाती है
जो बस जुड़ा हुआ है।
* *
** **
***
पॉलीमोंड से मेल खाती है
जो बस जुड़ा हुआ है।
** **
*** **
****
गैर- पॉलीमीयाँ से मेल खाती है
जो केवल कनेक्ट नहीं होगी, भले ही वह थे एक polyiamond।
इनपुट कल्पना
- इनपुट में केवल तारांकन, रिक्त स्थान और लाइन फ़ीड शामिल होंगे।
- इनपुट का पहला वर्ण हमेशा एक स्थान या तारांकन होगा (ग्रिड के ऊपरी बाएं कोने में ऊपर की ओर इंगित करने वाला त्रिकोण)।
- पहली और आखिरी लाइनों पर हमेशा कम से कम एक तारांकन होगा।
- कोई गारंटी नहीं है कि पहली पंक्ति के बाद की रेखाएँ खाली नहीं होंगी। एक पंक्ति में दो लाइनफीड वैध इनपुट में दिखाई दे सकते हैं।
- लाइन की लंबाई की जरूरत नहीं सभी समान हो।
जीतने की स्थिति
ये है कोड गोल्फ, तो बाइट्स जीत में सबसे कम जवाब।
परीक्षण के मामलों
सत्य नक्शे:
1) *
2) *
*
3) **
4) *** ***
*******
5) * *
** **
***
6) *
**
*
7) **
***
****
8) ****
** *
*****
9) ***********
** ** **
**** ** **
**
************
झूठे नक्शे:
1) *
*
*
2) * *
3) *
*
4) **
**
5) ***
***
6) ** **
*****
7) ** **
*** **
****
8) *
*
9) *****
** *
*****
AV VA\nVAVAV
बजाय** **\n*****
के रूप में यह आसान एक मानव कल्पना करने के लिए संभव बनाता है। मैंने पहले ही मार्टिन के ASCII चित्र में से एक को संपादित कर दिया।