हर प्रोग्रामर जानता है कि आयतें □
वास्तव में मज़ेदार हैं। इस मज़ा को तेज करने के लिए, इन प्यारे और फजी आरेखों को इंटरवॉवन ब्रैकेट के समूहों में बदल दिया जा सकता है।
यह चुनौती मेरे पूर्व का विलोम है ।
मान लें कि आपके पास इंटरलॉकिंग आयतों का एक समूह है जैसे:
+------------+
| |
+--+-+ +----+-+
| | | | | |
| | | +---+--+ | |
| | | | | | | |
+--+-+ | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
अतिरिक्त नोट्स:
- कोई भी दो
+
एस कभी भी आसन्न नहीं होंगे - कोई भी दो आयतें कभी एक किनारे या कोने को साझा नहीं करेंगी
- प्रत्येक स्तंभ में कभी-कभी केवल एक ऊर्ध्वाधर किनारे पर होगा
पहला कदम किसी भी आयत के बाएं-किनारे को देखना है। इसे चार ब्रैकेट प्रकारों में से एक को असाइन करें ({[<
। मैं चुनता हूं [
।
+------------+
| |
[--+-] +----+-+
[ | ] | | |
[ | ] +---+--+ | |
[ | ] | | | | |
[--+-] | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
अब दूसरे बाएँ-सबसे आयत को देखें। चूंकि यह एक [
आयत को ओवरलैप करता है , इसलिए यह एक अलग प्रकार का होना चाहिए। मैं चुनता हूं (
।
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] +---+--+ ) |
[ ( ] | | | ) |
[--(-] | +-+--+-)-+-+
( | | | | ) | |
( | | | | ) | |
( | | | | ) | | +-+
( +-+-+--+ ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
अगली बाईं-सबसे आयत किसी भी पिछली आयत के साथ प्रतिच्छेद नहीं करती है, लेकिन पिछले के भीतर घोंसला बनाती है। मैं इसे (
फिर से असाइन करने का चयन करता हूं । यह आम तौर पर एक आयत को उसी प्रकार असाइन करने के लिए एक अच्छा अनुमान है जो संभव हो तो अंदर घोंसला बना रहा है, लेकिन कभी-कभी बैकट्रैकिंग की आवश्यकता होती है।
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( +-+--)-)-+-+
( ( | | ) ) | |
( ( | | ) ) | |
( ( | | ) ) | | +-+
( (-+-+--) ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
यह अगली आयत [
फिर से सौंपी जा सकती है ।
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( [-+--)-)-+-]
( ( [ | ) ) | ]
( ( [ | ) ) | ]
( ( [ | ) ) | ] +-+
( (-[-+--) ) | ] | |
( [ | ) | ] +-+-+-+
(-----[-+----) | ] | | | |
[ | | ] | +-+ |
[ +------+ ] | |
[ ] | |
[----------] +-----+
यह अगली आयत थोड़े मजेदार है। यह एक (
और [
आयत दोनों को प्रतिच्छेद करता है , इसलिए मैं इसे एक {
आयत कह सकता हूं (या <
कोई भी उन्हें पसंद नहीं करता है)।
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] +-+
( (-[-{--) ) } ] | |
( [ { ) } ] +-+-+-+
(-----[-{----) } ] | | | |
[ { } ] | +-+ |
[ {------} ] | |
[ ] | |
[----------] +-----+
पिछले दो आयतें इतनी बुरी नहीं हैं। वे किसी भी दो प्रकार के हो सकते हैं।
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] {-}
( (-[-{--) ) } ] { }
( [ { ) } ] <-{-}->
(-----[-{----) } ] < { } >
[ { } ] < {-} >
[ {------} ] < >
[ ] < >
[----------] <----->
आयतों को पढ़कर, मैं समझ गया [(]([{))}]<{}>
। यह उपरोक्त इनपुट के लिए एक संभावित आउटपुट होगा। यहां कई संभावित विकल्पों की सूची दी गई है, संपूर्ण नहीं:
[(]([{))}]<{}>
<(>(<{))}>{()}
{<}[{(]>)}[<>]
any of the 4! permutations of ([{<, you get the idea...
इनपुट
ASCII- कला आयतें, इस धारणा पर कि वे असंदिग्ध हैं (ऊपर नोट देखें) और ठीक से कोष्ठक की एक स्ट्रिंग में परिवर्तित किया जा सकता है। आप वैकल्पिक अनुगामी न्यूलाइन के साथ या तो कोई अनुगामी स्थान या एक आयत को गद्देदार मान सकते हैं। कोई प्रमुख व्हाट्सएप नहीं होगा।
उत्पादन
मान्य ब्रैकेट स्ट्रिंग्स में से कोई भी जो आयतों के प्रतिच्छेदन प्रतिबंधों का पालन करता है। एक वैकल्पिक अनुगामी न्यूलाइन के अलावा, कोष्ठक के अलावा कोई अन्य वर्ण नहीं होना चाहिए। मुख्य नियम है, यदि दो वर्ग प्रतिच्छेद करते हैं, तो उन्हें अलग-अलग ब्रैकेट प्रकार सौंपे जाने चाहिए।
लक्ष्य
यह गुणवत्ता पर कोड-गोल्फ, (कमी) मात्रा है।
+
शीर्ष-बाएँ कोने के लिए नहीं हो सकता है , और फिर +
नीचे-बाएँ कोने के लिए यह (तुरंत नीचे) है ?