कचरा इकट्ठा करो


9

आप एक एवेन्यू को देख रहे हैं, और किसी ने कचरा बाहर छोड़ दिया है! आपको कचरे को कूड़ेदान में डालकर, समस्या को ठीक करने में मदद करने के लिए एक कार्यक्रम लिखने की आवश्यकता है।

काम

एवेन्यू प्रिंट करने योग्य ASCII वर्णों की एक स्ट्रिंग से बना है, जैसे:

[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)

यहाँ के कुछ कोष्ठक बेजोड़ हैं; वे सिर्फ डिकॉय हैं। क्या हम परवाह करते हैं कि कोष्ठक के मिलान सेट हैं।

एक कचरा कर सकते हैं एक स्ट्रिंग के साथ शुरू [और अंत के साथ ], और आंतरिक रूप से मिलान ब्रैकेट और कोष्ठक के साथ। उदाहरण के लिए, []और [[](dust)[]]उपरोक्त स्ट्रिंग में कचरा डिब्बे हैं।

एक कचरा बैग एक स्ट्रिंग है , जो आंतरिक रूप से मिलान किए गए कोष्ठक और कोष्ठक के साथ शुरू (और समाप्त होता )है। उदाहरण के लिए, (dust)उपरोक्त स्ट्रिंग में एक कचरा बैग है।

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

यहां एक अतिरिक्त नियम है। क्योंकि हम कचरा कलेक्टरों पर बहुत ज्यादा पैसा खर्च नहीं करना चाहते हैं, और उनके मार्ग दाएं से बाएं एवेन्यू के साथ उन्हें ले जाता है, हम एक कचरा बैग ले जाना चाहते हैं बाईं ओर (सबसे महत्वपूर्ण कसौटी, यह मानते हुए हम पर ले जाने के लिए है सभी) और सबसे कम संभव दूरी (जब तक यह बाईं ओर ले जाया जाता है)। इसलिए उदाहरण के लिए, केवल सही आउटपुट

[can1](bag)[can2]

है

[can1(bag)][can2]

(बैग को केवल एक पात्र को पीछे की ओर ले जाते हुए)। इसके अतिरिक्त, बैग को उसी सापेक्ष क्रम में रहने की आवश्यकता है:

[can](bag1)(bag2)

बनना है

[can(bag1)(bag2)]

(यानी आप (bag2)बाईं ओर नहीं रख सकते (bag1)।)

स्पष्टीकरण

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

उदाहरण:

  • इनपुट: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)

    आउटपुट: [[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence

  • इनपुट: []] (unusable) door (filthy) car

    आउटपुट: [(unusable)(filthy)]] door car


5
बंद मतदाता, क्या आप बता सकते हैं कि आप क्या अस्पष्ट पा रहे हैं? यह स्पष्ट नहीं है कि इसके साथ क्या गलत है, इस पोस्ट को ठीक करने के लिए कठिन है।

@ ais523 मैं यह नहीं समझ सकता कि कार्य क्या है। दी है कि क्योंकि मैं थक गया हूँ, लेकिन वर्तमान शब्द ज्यादा समझ में नहीं आता है
ब्लू

1
मूल रूप से, प्रत्येक विकल्प के लिए, जो कोष्ठक के अंदर है, लेकिन कोष्ठक के अंदर नहीं है, इसे बाईं ओर स्थानांतरित करें, जब तक कि यह कोष्ठक के अंदर भी न हो।

क्योंकि इस समस्या का बार-बार बंद होना और फिर से खुल जाना, मैंने इसे समस्या की अपनी समझ के साथ संपादित किया। उम्मीद है कि मैंने इस प्रक्रिया में समस्या को नहीं बदला है।

@ ais523 यह मेरे द्वारा ठीक है। आपके सभी संपादन के लिए आपका बहुत-बहुत धन्यवाद।
इवान डेलानॉय

जवाबों:


3

जावास्क्रिप्ट (ईएस 6), 263 228 209 205 184 177 173 162 बाइट्स

कोड / नियमित अभिव्यक्ति के साथ किसी भी मदद की बहुत सराहना की जाती है।

f=s=>s.match(t=/\[\[][\w()]*\[]]|\[]/g,g=/\([\w()]*\)/g,i=0,u=s.split(t).filter(e=>e)).map(e=>e.substr(0,e.length-1)+u[i].match(g).join``+`]`+u[i++].replace(g,``)).join``

एक अनाम फ़ंक्शन; एक Stringपैरामीटर लेता है s, और आउटपुट देता है।

/\[\[][\w()]*\[]]|\[]/g नेस्टेड कचरा बैग के साथ कचरे के डिब्बे से मेल खाता है, हालांकि मुझे नहीं लगता कि यह जरूरत पड़ने पर कचरा बैग के भीतर संतुलित ब्रैकेट की जांच कर सकता है।

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