बिंदुओ को जोडो


13

oडॉट्स का प्रतिनिधित्व करने वाली श्रृंखला को देखते हुए , उन्हें लंबवत या क्षैतिज रूप से कनेक्ट करें

उदाहरण

इनपुट:

o   o

o

आउटपुट:

o---o
|
|
o

इनपुट:

o   o    o

    o

आउटपुट:

o---o----o
    |
    o

कल्पना

  • यदि आप चाहते हैं कि आयत बनाने के लिए रिक्त स्थान के साथ इनपुट गद्देदार हो, तो कृपया अपने उत्तर में इसे निर्दिष्ट करें

  • oइनपुट में केवल स्थान, रिक्त स्थान और नए अंक होंगे

  • कनेक्ट करने के लिए हमेशा डॉट्स की एक जोड़ी होगी
  • कोई भी दो oसीधे सीधे आसन्न नहीं होंगे
  • डॉट्स के साथ जोड़ा जाना चाहिए |और -क्रमशः, ऊर्ध्वाधर और क्षैतिज कनेक्शन के लिए
  • कोई भी डॉट कनेक्शन ओवरलैप नहीं होगा

क्या आपको हर कानूनी जोड़ी से जुड़ना है या बस डॉट्स को 1 घटक से जोड़ना है? क्या डॉट्स को हमेशा 1 घटक में जोड़ा जा सकता है? "हमेशा कनेक्ट करने के लिए कम से कम दो बिंदु होंगे" अगर मैं इसे सही समझता हूं तो अधिक समझ में आएगा। एक दंपती परीक्षण मामलों को भी साफ कर सकते हैं।
यादृच्छिक

@rrrrara ने आपको हर कानूनी जोड़ी से जोड़ा है, वे हमेशा 1 घटक नहीं होंगे
डाउनएजेट

@Downgoat कुछ और परीक्षण मामलों के बारे में कैसे एक घटक के भीतर डिस्कनेक्ट किए गए घटकों और छोरों को कवर करते हैं? ;)
मार्टिन एंडर

जवाबों:


2

जाप, 33 29 बाइट्स

Uy eV="o +o"_rS'|} y eV,_rS'-

इसे ऑनलाइन टेस्ट करें!

यह काम किस प्रकार करता है

Uy         // Transpose rows with columns in the input.
eV="o +o"  // Set V to the regex-string "o +o", and recursively replace each match Z with:
_rS'|}     //  Z with spaces replaced with "|"s.
y          // Transpose again.
eV,        // Recursively replace matches Z of V with:
_rS'-      //  Z with spaces replaced with "-"s.

2

रूबी, 137 133 बाइट्स

->s{eval"s.split($/).map(&:chars)#{".map{|x|x.join.gsub(/o +(?=o)/){|x|x.tr' ',?|}.chars}.transpose"*2}.map(&:join)*$/".sub'?|','?-'}

यह बिल्कुल भयानक है। अभी भी गोल्फ की कोशिश कर रहा हूं।

कृपया एक गद्देदार आयत के रूप में इनपुट करें।

"पठनीयता" के लिए नई रूपरेखा:

eval"s.split($/).map(&:chars)#{".map{|x|x.join.gsub(/o +(?=o)/){|x|x.tr' ',?|}
.chars}.transpose"*2}.map(&:join)*$/".sub'?|','?-'

4
ठीक है, मैं एक गद्देदार आयत के रूप में इनपुट करूँगा, लेकिन केवल इसलिए कि आपने इतनी अच्छी तरह से पूछा था।
एलेक्स ए।

के \bबजाय आप का उपयोग कर सकते हैं (?=o)?
जस्टिन

@ जस्टिन काम नहीं करता है। : /
दरवाज़े

2

रेटिना , 80 बाइट्स

T` `-`o.+o
Tm` `|`(?<=(?(1)!)^(?<-1>.)*o\D*¶(.)*) (?=(.)*¶\D*o(?<-2>.)*$(?(2)!))

इनपुट की आवश्यकता है।

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

व्याख्या

पहला चरण बहुत सरल है, यह बस सभी स्थानों को हाइफ़न में बदल देता है जो oएक ही पंक्ति में दो एस के बीच पाए जाते हैं ।

दूसरा चरण एस को कवर करता है |। यह थोड़ा पेचीदा मामला है और इसमें समूहों को संतुलित करने की आवश्यकता है । दिखावटी

(?<=(?(1)!)^(?<-1>.)*o\D*¶(.)*)

एक oही कॉलम में पहले से मौजूद चेक । याद रखें कि लुकबाइंड को दाईं से बाईं ओर पढ़ा जाना चाहिए। (.)*मैच की क्षैतिज स्थिति को संग्रहीत \D*¶करता है, पूर्ववर्ती लाइनों में किसी भी चरित्र के लिए स्काइप्स की जांच करता है, oशाब्दिक रूप से मेल खाता है। फिर (?(1)!)^(?<-1>.)*यह सुनिश्चित करता है कि उस की क्षैतिज स्थिति oसमान है।

लुकहेड

(?=(.)*¶\D*o(?<-2>.)*$(?(2)!))

बिलकुल विपरीत दिशा में भी यही करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.