इस चुनौती में, हम Ascii उपयोगकर्ता इंटरफ़ेस प्रस्तुत करते हैं।
+----------------------+
|+-----------++-------+|
||<- Previous||Next ->||
|+-----------++-------+|
|== The title == |
| |
|Lorem ipsum dolor |
|sit amet... |
|+--------------+ |
||Post a comment| |
|+--------------+ |
|+-----------------+ |
||User X commented:| |
|| | |
||This is amazing! | |
|+-----------------+ |
|+-----------------+ |
||User Y commented:| |
|| | |
||lol | |
|+-----------------+ |
+----------------------+
इस तरह की प्रत्येक ड्राइंग एक तत्व से बनी होती है , जिसमें सबलेमेंट्स हो सकते हैं। संभावित तत्वों को नीचे सूचीबद्ध किया गया है:
- पाठ तत्व। पाठ की एक या अधिक पंक्तियाँ समाहित करता है।
- बॉक्स तत्व। इसमें एक सबलेमेंट है जो सीमाओं से घिरा हुआ है। सीमाओं है
+किनारों में और रों-रों और|किनारों पर। - क्षैतिज सूची। इसमें एक या अधिक तत्व होते हैं जो क्षैतिज रूप से संरेखित होते हैं।
- लंबवत सूची। एक या एक से अधिक तत्व होते हैं जो एक दूसरे पर लंबवत और क्षैतिज रूप से बाईं ओर संरेखित होते हैं।
हर तत्व एक आयत है।
प्रत्येक तत्व, अपनी सामग्री के अलावा, एक संपत्ति है जिसे बेसलाइन कहा जाता है । आधार रेखा का उपयोग तत्वों को लंबवत रूप से संरेखित करने के लिए किया जाता है: क्षैतिज सूची के प्रत्येक तत्व को ऐसे संरेखित किया जाता है कि उनकी आधार रेखा एक ही रेखा पर हो। नीचे दिए गए उदाहरण में, आधार रेखा में वर्ण हैं aeg। तीन बॉक्स तत्वों की आधार रेखाएं (0-अनुक्रमित) हैं 1, 3और 2।
+-+
|c|+-+
+-+|d||f|
|a||e||g|
|b|+-+|h|
+-+ +-+
आधारभूत नियम निम्नलिखित नियमों के साथ निर्धारित किए जाते हैं:
- पाठ तत्वों के लिए, पाठ की पहली पंक्ति आधार रेखा है, अर्थात।
0। - बॉक्स तत्वों के लिए, बेसलाइन 1 + सबलेमेंट की आधार रेखा है।
- क्षैतिज सूचियों के लिए, आधार रेखा सूची में अधिकतम आधार रेखा है (
3ऊपर उदाहरण में)। - ऊर्ध्वाधर सूचियों के लिए, आधार रेखा एक तत्व की आधार रेखा है, जिसे इनपुट में निर्दिष्ट किया जाना चाहिए।
इनपुट
इनपुट कुछ प्रारूप में एक इंटरफ़ेस का एक विनिर्देश है (उदाहरण के लिए, json)। उदाहरण इनपुट में निम्न प्रारूप है:
- एक स्ट्रिंग तत्व एक स्ट्रिंग है:
"..." - एक बॉक्स तत्व एक सूची है पहला तत्व है
"b":["b", subelement] - एक क्षैतिज सूची एक सूची है जो पहला तत्व है
"h":["h", items...] - एक ऊर्ध्वाधर सूची एक सूची है, जो पहला तत्व है
"v"और दूसरा तत्व है (0-अनुक्रमित) तत्व का आधार नंबर यानी आधार रेखा का उपयोग किया जाता है:["v", n, items...]
उत्पादन
आउटपुट में मेरे द्वारा निर्दिष्ट नियमों का उपयोग करके संरेखित तत्व शामिल होने चाहिए। आउटपुट स्टडआउट हो सकता है, स्ट्रिंग्स की सूची या सार्थक कुछ भी हो सकता है।
स्कोरिंग
यह कोड-गोल्फ है , सामान्य नियम लागू होते हैं।
परीक्षण के मामलों
1
["b", ["v", 0, ["h", ["b", "<- Previous"], ["b", "Next ->"]], "== The title ==\n\nLorem ipsum dolor\nsit amet...", ["b", "Post a comment"], ["b", "User X commented:\n\nThis is amazing!"], ["b", "User Y commented:\n\nlol"]]]
+----------------------+
|+-----------++-------+|
||<- Previous||Next ->||
|+-----------++-------+|
|== The title == |
| |
|Lorem ipsum dolor |
|sit amet... |
|+--------------+ |
||Post a comment| |
|+--------------+ |
|+-----------------+ |
||User X commented:| |
|| | |
||This is amazing! | |
|+-----------------+ |
|+-----------------+ |
||User Y commented:| |
|| | |
||lol | |
|+-----------------+ |
+----------------------+
2
["h", ["b", ["v", 0, "a", "b"]], ["b", ["v", 2, "c", "d", "e"]], ["b", ["v", 1, "f", "g", "h"]]]
+-+
|c|+-+
+-+|d||f|
|a||e||g|
|b|+-+|h|
+-+ +-+
3
["h", ["b", ["v", 0, ["b", ["h", "a\nb", "c"]], "d", "e", ["h", ["h", "f"], ["b", ["h", "g"]], "h"]]], ["b", "ijk\nl\nmn\no"], ["v", 2, ["b", "pqrst"], ["b", "uv\nw"], ["b", "x"]], ["b", ["b", ["b", "yz"]]]]
+-----+
|pqrst|
+-----+
+--+
|uv|
|w | +------+
+-----+ +--+ |+----+|
|+--+ |+---++-+ ||+--+||
||ac| ||ijk||x| |||yz|||
||b | ||l |+-+ ||+--+||
|+--+ ||mn | |+----+|
|d ||o | +------+
|e |+---+
| +-+ |
|f|g|h|
| +-+ |
+-----+
4
["h", "a * b = ", ["v", 0, "a + a + ... + a", "\\_____________/", " b times"]]
a * b = a + a + ... + a
\_____________/
b times
aउसी पंक्ति में हो e, जैसा कि वे दोनों अपने बक्से की आधार रेखा पर हैं। मुझे पूरी तरह से यकीन नहीं है कि "बेसलाइन" इसके लिए सही शब्द है, मुझे केवल इतना पता है कि यह एक समान उद्देश्य के लिए टाइपोग्राफी के क्षेत्र में उपयोग किया जाता है।