जब मैं प्रलेखन, टिप्पणियाँ, आदि लिखता हूँ तो मुझे ASCII टेबल बनाना बहुत पसंद है। वे आम तौर पर बहुत अच्छे दिखते हैं, लेकिन मुझे हमेशा लगता है कि वे और भी बेहतर दिख सकते हैं - खासकर यूटीएफ -8 / यूनिकोड में बॉक्स ड्रॉइंग कैरेक्टर शामिल हैं । हालांकि, इन पात्रों का उपयोग करने के लिए बहुत महत्वपूर्ण हैं, कई प्रमुख प्रेस डालने की आवश्यकता होती है। आपका कार्य? एक प्रोग्राम या एक फ़ंक्शन लिखें जो स्वचालित रूप से ASCII तालिकाओं को UTF-8 / यूनिकोड समकक्ष में बदल सकता है।
इस चुनौती को सैंडबॉक्स किया गया था ।
चुनौती
एक प्रोग्राम लिखें, जिसमें एक इनपुट स्ट्रिंग के रूप में ASCII तालिका दी गई है, यूनिकोड / UTF-8 बॉक्स ड्राइंग वर्णों के साथ तालिका को फिर से तैयार करता है। विशेष रूप से, वर्ण जो तालिका का एक हिस्सा हैं, उन्हें निम्नानुसार अनुवादित किया जाना चाहिए:
(Unicode, 3 bytes each in UTF-8)
- to ─ (\u2500)
| to │ (\u2502)
= to ═ (\u2550)
and + to one of:
┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518),
├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534),
┼ (\u253C)
or, if '=' on either side:
╒ (\u2552), ╕ (\u2555), ╘ (\u2558), ╛ (\u255D),
╞ (\u255E), ╡ (\u2561), ╤ (\u2564), ╧ (\u2567),
╪ (\u256A)
विवरण
मैं / हे:
- डिफ़ॉल्ट I / O की अनुमति है
- आप किसी भी उचित प्रारूप में इनपुट ले सकते हैं, जिसमें एक स्ट्रिंग के रूप में तालिका, या तालिका युक्त फ़ाइल का पथ शामिल है।
- आप किसी फ़ाइल पर आउटपुट कर सकते हैं और अतिरिक्त तर्क के रूप में फ़ाइल का नाम ले सकते हैं।
- हालाँकि, आप इनपुट फ़ाइल को संशोधित नहीं कर सकते हैं । (इसे भविष्य के संपादन में आसानी के लिए रखा जाना चाहिए)
इनपुट:
- आप मान सकते हैं कि इनपुट की प्रत्येक पंक्ति को उसी लंबाई के साथ गद्देदार किया गया है
। - आप यह नहीं मान सकते हैं कि एक नई पंक्ति के बाद पहला चरित्र तालिका सीमाओं का एक हिस्सा है (जैसा कि यह व्हाट्सएप हो सकता है)।
- इनपुट को एक वैध तालिका माना जाता है यदि सभी वर्ण (जो तालिका का एक हिस्सा
-=|हैं ) बिल्कुल दो वर्णों+से जुड़े होते हैं और क्षैतिज और लंबवत दोनों प्रकार के कम से कम एक वर्ण से जुड़े होते हैं। - आपका प्रोग्राम मान्य इनपुट के साथ कोई त्रुटि उत्पन्न नहीं कर सकता है।
- यदि इनपुट मान्य नहीं है तो व्यवहार अपरिभाषित है और आप किसी भी उत्पादन का उत्पादन कर सकते हैं।
- इनपुट में कोई भी यूटीएफ -8 अक्षर शामिल हो सकते हैं, जिसमें बॉक्स ड्राइंग वर्ण भी शामिल हैं।
आउटपुट:
- कोई भी वर्ण
-=|+जो तालिका का हिस्सा नहीं है, उसे छोड़ दिया जाना चाहिए। - इसी तरह, किसी भी अन्य वर्ण को छोड़ दिया जाना चाहिए-जैसा है।
- एक अग्रणी और / या अनुगामी न्यूलाइन की अनुमति है।
अन्य:
- मानक खामियों को मना किया जाता है, हमेशा की तरह।
- यदि आपकी पसंदीदा भाषा में एक अंतर्निहित है जो इस समस्या को हल करता है, तो आप इसका उपयोग नहीं कर सकते हैं।
- इसका मतलब है कि कार्यक्रम, कार्य, सबरूटीन्स या निर्देश जो बिना किसी अतिरिक्त के इस चुनौती के लिए मान्य प्रस्तुतियाँ होंगे।
- इस चुनौती में आवश्यक प्रत्येक वर्ण तीन बाइट्स लंबा होता है जब वे UTF-8 में एन्कोडेड होते हैं।
जुड़े हुए पात्र :
एक चरित्र दूसरे से जुड़ा है, यदि:
- यह
|सीधे या ऊपर या नीचे है+या|; - यह है
-और पहले या बाद में सीधे है+या-; - यह है
=और पहले या बाद में सीधे है+या=; - यह है
+और एकदम ऊपर या नीचे है|या+, या पहले या बाद में सीधे है-,=या+।
किसी वर्ण को तालिका का एक भाग माना जाता है, यदि वह किसी भी वर्ण से जुड़ा होता है जो तालिका का एक भाग होता है। परिभाषा के अनुसार, +इनपुट में पहला तालिका का एक हिस्सा है।
उदाहरण
कॉपी-पेस्ट करने योग्य संस्करण के रूप में यहां उपलब्ध उदाहरण ।
Input: Output:
+------------------+ ┌──────────────────┐
| Hello+World! | │ Hello+World! │
+==================+ ╞══════════════════╡
| This is+my first | -> │ This is+my first │
|+-+ code|golf +-+| │+-+ code|golf +-+│
|+-+chall|enge! +-+| │+-+chall|enge! +-+│
+------------------+ └──────────────────┘
+===+===+===+ ╒═══╤═══╤═══╕
| 1 | 2 | 3 | │ 1 │ 2 │ 3 │
+---+===+===+===+ ┌───╪═══╪═══╪═══╡
| 1 | 1 | 2 | 3 | │ 1 │ 1 │ 2 │ 3 │
+---+---+---+---+ -> ├───┼───┼───┼───┤
| 2 | 2 | 4 | 6 | │ 2 │ 2 │ 4 │ 6 │
+---+---+---+---+ ├───┼───┼───┼───┤
|-3 |-3 |-6 |-9 | │-3 │-3 │-6 │-9 │
+===+---+---+---+ ╘═══╧───┴───┴───┘
+-----+ -> <Undefined>
+-----+ -> ┌─────┐
+-----+ └─────┘
+-----------------+
| Hello, World! |
| This is invalid | -> <Undefined>
| input |
-----------------+
++++ ┌┬┬┐
++++ -> ├┼┼┤
++++ └┴┴┘
+--+
++++ -> <Undefined>
+--+
आखिरकार...
यह कोड-गोल्फ है , इसलिए कम से कम बाइट्स जीतता है। हैप्पी गोल्फिंग!
Hello Worldतालिका से है, तो इनर टेबल को टेबल नहीं माना जाता है क्योंकि टेबल के अंदर का टेक्स्ट अपरिवर्तित रहना चाहिए, और उन्हें बाहरी टेबल सीमाओं का हिस्सा नहीं माना जाता है क्योंकि वे उनसे ठीक से जुड़े नहीं हैं।
+-+अंश को कनेक्टेड टेबल बनाने के लिए क्यों नहीं माना जाता है?