त्रिकोणीय ग्रिड: बस जुड़ा हुआ पॉलियामंड


9

जब हम एक त्रिकोणीय ग्रिड किक पर होते हैं , तो मैं यह बताना चाहूंगा कि त्रिकोणीय ग्रिड पर पॉलीओमीनो के बराबर है । उन्हें पॉलीयमोंड कहा जाता है , और वे उनके किनारों के साथ समबाहु त्रिभुज को जोड़कर बनाई गई आकृति हैं। इस चुनौती में आप यह तय करने जा रहे हैं कि एक त्रिकोणीय ग्रिड के कौन से उप-समूह पॉलीमींड हैं, और क्या उनमें छेद हैं। क्योंकि यह केवल एक छेद के साथ एक पॉलीमीओन्ड बनाने के लिए 9 त्रिकोण लेता है, आपके कोड को यथासंभव छोटा होना चाहिए।

ग्रिड

हम इनपुट के लिए मार्टिन के त्रिकोणीय ग्रिड लेआउट का उपयोग करेंगे :

एक त्रिकोणीय ग्रिड

इस तथ्य पर ध्यान दें कि त्रिकोण के केंद्र मोटे तौर पर आयताकार ग्रिड बनाते हैं और शीर्ष बाएँ त्रिकोण "अंक" ऊपर की ओर होते हैं। हम इस ग्रिड के सबसेट का वर्णन कर सकते हैं, फिर, एक आयताकार "स्टार मैप" देकर यह दर्शाता है कि कौन से त्रिकोण शामिल हैं और जो शामिल नहीं हैं। उदाहरण के लिए, यह नक्शा:

** **
*****

सबसे छोटे पॉलीमोंड से मेल खाता है जिसमें एक छेद होता है:

9-आयोडन छिद्र के साथ

छेद

एक पॉलियामंड जिसमें ऊपर के उदाहरण जैसा एक छेद होता है (एक क्षेत्र जो पॉलीयमोंड का हिस्सा नहीं है, जो कि सभी क्षेत्रों से घिरा हुआ है जो कि हैं ), टोपोलॉजिकली बोलना, बस जुड़ा हुआ नहीं है

चुनौती

एक फ़ंक्शन या प्रोग्राम लिखें जो इनपुट के रूप में "स्टार मैप" के रूप में ऊपर वर्णित है और एक सत्य का उत्पादन करता है यदि और केवल अगर त्रिकोणीय ग्रिड के संकेतित सबसेट एक कनेक्टेड पॉलीमीओन्ड है

और ज्यादा उदाहरण

*** ***
*******

पॉलीमोंड से मेल खाती है

13-बिना किसी छेद वाला इमोन्ड

जो बस जुड़ा हुआ है।


*   *
** **
 ***

पॉलीमोंड से मेल खाती है

9-बिना किसी छेद वाले इमोन्ड

जो बस जुड़ा हुआ है।


**  **
*** **
 ****

गैर- पॉलीमीयाँ से मेल खाती है

13 त्रिकोण जो कुछ भी दिलचस्प नहीं हैं

जो केवल कनेक्ट नहीं होगी, भले ही वह थे एक polyiamond।

इनपुट कल्पना

  • इनपुट में केवल तारांकन, रिक्त स्थान और लाइन फ़ीड शामिल होंगे।
  • इनपुट का पहला वर्ण हमेशा एक स्थान या तारांकन होगा (ग्रिड के ऊपरी बाएं कोने में ऊपर की ओर इंगित करने वाला त्रिकोण)।
  • पहली और आखिरी लाइनों पर हमेशा कम से कम एक तारांकन होगा।
  • कोई गारंटी नहीं है कि पहली पंक्ति के बाद की रेखाएँ खाली नहीं होंगी। एक पंक्ति में दो लाइनफीड वैध इनपुट में दिखाई दे सकते हैं।
  • लाइन की लंबाई की जरूरत नहीं सभी समान हो।

जीतने की स्थिति

ये है , तो बाइट्स जीत में सबसे कम जवाब।

परीक्षण के मामलों

सत्य नक्शे:

1) *

2) *
   *

3) **

4) *** ***
   *******

5) *   *
   ** **
    ***

6) *
   **
    *

7)    **
     ***
   ****

8) ****
   **   *
    *****

9) ***********
   **    **  **
    ****  **  **
              **
   ************

झूठे नक्शे:

1) *
   *
   *

2) * *

3) *
    *

4)  **
   **

5) ***

   ***

6) ** **
   *****

7) **  **
   *** **
    ****

8)  *
    *

9) *****
   **   *
    *****

1
अच्छा प्रश्न। त्रिकोणीय ग्रिड एक बात बनने के लिए जा रहे हैं, मेरा सुझाव है कि वे उदाहरण के लिए के रूप में प्रतिनिधित्व किया जा AV VA\nVAVAVबजाय ** **\n*****के रूप में यह आसान एक मानव कल्पना करने के लिए संभव बनाता है। मैंने पहले ही मार्टिन के ASCII चित्र में से एक को संपादित कर दिया।
लेवल रिवर सेंट

मैं विशेष रूप से मानव पठनीयता से चिंतित था, नहीं। मैं चाहता था कि जो भी कार्यक्रम छोटा हो उसके लिए पढ़ना आसान होगा।
क्विंटोपिया 5

तो मूल रूप से, अगर वहाँ एक खंड केवल कोने से "जुड़ा हुआ" है?
माइकल क्लेन

1
या अगर ऐसे हिस्से हैं जो बिल्कुल जुड़े नहीं हैं। मार्टिन ने इसे इस तरह से कहा: सही है अगर आकृति और जमीन दोनों किनारों के साथ जुड़े हुए हैं, तो यह है कि 2 बाढ़-भर विमान भरने के लिए पर्याप्त हैं।
क्विंटोपिया 15

जवाबों:


4

घोंघे , 95 बाइट्स

F&
lr|=((ul.)2 ,l~a~)d|!((ul.)2 ,l~a~)u}\*}+l\ ,~a~|{\ (lr|=((ul.)2 ,l~a~)d|!((ul.)2 ,l~a~)u}+~

यह वास्तव में दोहराव का सामना करना पड़ा, क्योंकि मैंने मैक्रोज़ या किसी भी प्रकार के बैक-रेफरेंस को लागू नहीं किया है। यह जाँचने के लिए कि प्रत्येक तारे के लिए शीर्ष रेखा पर सबसे बाईं ओर का एक पथ मौजूद है; और प्रत्येक स्थान के लिए, ग्रिड के किनारे पर एक रास्ता है।

F&                         ,, option F: pad lines with spaces to the length of the longest
                           ,, option &: print 1 iff match succeeds from every cell
lr                         ,, direction left or right, or
      | =((ul.)2 ,l~a~) d  ,, direction down, if we are an even number of orthogonal moves from the top left
      | !((ul.)2 ,l~a~) u  ,, or, direction up if we are odd number of moves from the top left
    }  \*                  ,, literal '*'
}+                         ,, 1 or more times
l\ ,~a~                    ,, check that we are on the leftmost * in the top line

|                          ,, the part before this is for starting on '*'; part after for starting on ' '

{ \                        ,, literal ' '
    (   lr                 ,, direction left or right, or
      | =((ul.)2 ,l~a~) d  ,, same drill as before...
      | !((ul.)2 ,l~a~) u 
}+                         ,, 1 or more times
~                          ,, end on an out of bounds cell

मुझे समझ नहीं आया कि यह कैसे काम करता है, लेकिन यह पूरी तरह से काम करता है।
क्विंटोपिया

3

सीजेएम, 101 98 बाइट्स

qN/_z,f{' e]}{S2*f+W%z}4*:eeee::f+:~{_(aL{+_{_2,.+1$2,.-@_:+1&!2*(a.+}%2${a1$&},\;@1$-@@}h;\;-}2*!

इसे ऑनलाइन आज़माएं।

मैंने आखिरकार सीजाम में एक बाढ़ भरने को लागू करने के अपने डर पर काबू पा लिया। यह उतना ही बदसूरत है जितना मुझे उम्मीद थी, और यह निश्चित रूप से गोल्फ हो सकता है।

सामान्य विचार दो बाढ़-प्रदर्शन करना है (जो वास्तव में परिकल्पित कोशिकाओं की सूची से निष्कासन के रूप में लागू किया जाता है)। पहला पास उन सभी रिक्त स्थान को हटा देगा जो किनारे से पहुंच योग्य हैं। दूसरा पास तब *पढ़ने के क्रम में पहले उठाएगा और उस से आने वाले सभी त्रिकोणों को हटा देगा। यदि और केवल यदि परिणामी सूची खाली है, तो पॉलीमोंड बस जुड़ा हुआ था:

  • यदि पॉलीमोंड में छेद था, तो पहले बाढ़ भराव उस छेद तक पहुंचने और निकालने में असमर्थ है।
  • यदि इनपुट में कई डिस्कनेक्ट किए गए पॉलीमायड ​​होते हैं, तो दूसरा बाढ़ भराव उन सभी तक पहुंचने और निकालने में असमर्थ है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.