ब्रेसिज़ को ठीक करें, आदि


15

आपका मिशन, क्या आपको इसे स्वीकार करना चाहिए, किसी दिए गए स्ट्रिंग को बनाने के लिए न्यूनतम संख्या में कोष्ठक, ब्रेसिज़ और कोष्ठक जोड़ना है (केवल कोष्ठक, ब्रेस और कोष्ठक युक्त) में सही ब्रेस मिलान है। जोड़े गए प्रतीकों के संबंधों को जोड़ा ब्रेसिज़ के बीच अधिकतम दूरी होने से तोड़ना चाहिए। आपको केवल एक सही उत्तर देना होगा जो इन दोनों नियमों से मेल खाता है; इसके अलावा, क्या उन्हें अस्तित्व में होना चाहिए, किसी भी तरह से आपको फिट देखा जा सकता है।

उदाहरण:

input      output
                          // Empty String is a legal input
[          []             // Boring example
[()]       [()]           // Do nothing if there's nothing to be done
({{        ({{}})         // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}})
[([{])]}   {[([{}])]}     // NOT [([])]{[([])]} or similar

आप एक प्रोग्राम या फ़ंक्शन लिख सकते हैं , अपने फ़ंक्शन के लिए एक स्ट्रिंग तर्क के रूप में STDIN के माध्यम से इनपुट प्राप्त करता है, जो आउटपुट को एक स्ट्रिंग के रूप में देता है या इसे STDOUT (या निकटतम विकल्प) पर प्रिंट करता है। आप वैकल्पिक रूप से आउटपुट में एक एकल अनुगामी न्यूलाइन शामिल कर सकते हैं।

आप मान सकते हैं कि इनपुट स्ट्रिंग में केवल निम्नलिखित 6 अक्षर हैं (या इसकी कमी है): [](){}(आपको समर्थन करने की आवश्यकता नहीं है <>)

यह , सबसे छोटा कार्यक्रम जीत है। मानक कमियां निश्चित रूप से प्रतिबंधित हैं


क्या आप वास्तविक शीर्षक के नीचे सीधे शीर्षक को दोहराते हैं, या वास्तविक टैग से सीधे टैग को दोहराते हैं? यदि आप सैंडबॉक्स से चिपकाए गए मामले में पूछ रहे हैं और उन्हें निकालना भूल गए हैं।
बारिश

@ रैनबोल्ट पूर्व नं (सैंडबॉक्स), बाद वाला हां
डुर्रोन 597

1
@AlexA। मैं देख सकता हूं कि वे कैसे मामूली तरीकों से अलग हैं, लेकिन मुझे लगता है कि वे अलग-अलग प्रश्नों पर विचार करने के लिए समान हैं।
निन्जाबियरमोनकी

काफी उचित। यह निश्चित रूप से कट-एंड-ड्राय नहीं है, और यदि अन्य निर्णय नहीं लेते हैं तो मैं इसे बंद नहीं करूंगा।
निन्जाबियरमोनकी

मैं इसे काफी अलग मानूंगा। फिर से खोलने के लिए वोट दिया।
अंडरस्कोर

जवाबों:


1

अजगर 2 - 198

मैं कुछ अधिक नीचे कुछ समझ पाने की उम्मीद कर रहा था, लेकिन वास्तव में चीजों को करने के विभिन्न तरीकों का परीक्षण करने के लिए अभी बहुत समय नहीं है।

s="()[]{}";f=s.find
def F(S):
 r=m=""
 for c in S:
    i=f(c)^1
    if i%2:m=c+m;r+=c
    else:
     for d in m:
        if d==s[i]:break
        r+=s[f(d)^1]
     else:r=s[i]+r+c
     m=m[1:]
 for c in m:r+=s[f(c)^1]
 return r

ओपी में {[([{}])]}{[(आसन्न समूहों के साथ) एक उदाहरण शामिल नहीं था , लेकिन इस कार्यक्षमता की आवश्यकता है या नहीं यह सही है{[([{}])]}{[]}


कैसे है कि 198 बाइट्स?
ज़ाचारि

@ZacharyT, टैब ( \t) स्टैक ओवरफ्लो पर 4 रिक्त स्थान के रूप में स्वरूपित होते हैं, लेकिन मैं वास्तव में वैकल्पिक टैब और रिक्त स्थान हैं (आप पायथन 2 में इंडेंटेशन स्तरों के लिए ऐसा कर सकते हैं, 3 नहीं) तो पहला स्तर [space]दूसरा है [tab]तीसरा [tab][space]आगे है [tab][tab]। रिक्त स्थान के साथ कोड दर्ज करने से मुझे यहां से 227 मिलता है mothereff.in/byte-counter , और मैं 10 टैब गिनता हूं 227 - (3 * 10) = 197. हुह, मुझे लगता है कि मैं वास्तव में 1 रास्ते से वापस आकर गिना जाता हूं जब मैं ने पोस्ट किया।
१२:१४ पर केसाब

डांग! यह वास्तव में एक अच्छी चाल है। (पंक्ति के अंत में दर्ज करें)। आप return r+[s[f(c)^1]for c in m]बाइट्स को बचाने के लिए नीचे-लूप और रिटर्न-स्टेटमेंट को जोड़ सकते हैं ।
ज़ाचरी

1

हास्केल, 513

समारोह h। पिछले संस्करण ने "({{)["और के लिए सही उत्तर नहीं दिए"({{)}}"

import Control.Monad

m '('=')'
m '['=']'
m '{'='}'
m ')'='('
m ']'='['
m '}'='{'

data B=B Char[B]|N[B]|Z B Char[B]
instance Eq B where(==)a b=q a==q b
instance Ord B where(<=)a b=q a<=q b

w(B o s)=o:(s>>=w)++[m o]
v(N k)=k>>=w
n(B _ k)=(sum$n<$>k)+1
q(N k)=sum$n<$>k

u(Z(Z g pc pk) c k)=Z g pc(pk++[B c k])
u(Z(N pk) c k)=N(pk++[B c k])
t(N k)=N k
t z=t$u z

f z c|elem c "([{"=[Z z c[]]
f z@(Z p o k) c|m c==o=[u z]|2>1=(u$Z(Z p o [])(m c)k):f(u z)c
f (N k)c=[Z(N[])(m c)k]

h s=v.minimum$t<$>foldM f(N [])s
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.