टर्मिनल इन दिनों बहुत उबाऊ हैं । वे इस तरह दिखते थे:
अब वे सिर्फ गोरे और सुस्त और काले-गोरे हैं। मैं चाहता हूं कि आप मुझे एक कार्यक्रम लिखें, जो मेरे टर्मिनल को फिर से रंगीन बना देगा!
विवरण
इस उदाहरण को रूबी कोड लें:

अधिकांश लिनक्स टर्मिनल इन एस्केप अनुक्रमों ( \eएस्केप चरित्र के लिए खड़ा है) का समर्थन करते हैं, और विंडोज उन्हें ANSICON के साथ समर्थन कर सकते हैं । यहां विशिष्ट एस्केप सीक्वेंस का सिंटैक्स है जो किसी स्ट्रिंग के टेक्स्ट या बैकग्राउंड कलर को बदल सकता है:
\e[{{COLOR}}m
जहां \eभागने के चरित्र ( 0x1BASCII में) के लिए खड़ा है और {{COLOR}}उस रंग की संख्या से बदल दिया जाता है जिसे आप उपयोग करना चाहते हैं (बाद में अधिक विवरण)। इस एस्केप सीक्वेंस के बाद आने वाले टेक्स्ट को निर्देशानुसार फॉर्मेट किया जाएगा, और 0सभी फॉर्मेटिंग को रीसेट कर दिया जाएगा।
आपकी चुनौती कुछ ऐसे टेक्स्ट को निर्दिष्ट करने के लिए है जिसमें रंग शामिल हो सकता है, और इसका एक रंगीन संस्करण आउटपुट कर सकता है।
इनपुट आउटपुट
सामान्य पाठ सामान्य की तरह काम करता है, और शाब्दिक रूप से मुद्रित होता है। उदाहरण के लिए, इनपुट wafflesसमान आउटपुट देता है, जिसमें कोई विशेष रंग नहीं होता है।
रंग निर्दिष्ट करने के लिए सिंटैक्स, विकिपीडिया के सिंटैक्स के समान है । उदाहरण के लिए, वाक्य में लाल रंग में "रंग लाल" शब्दों को रंगने के लिए, This is the color red!इनपुट होगा:
This is {{red|the color red}}!
पृष्ठभूमि के रंग भी काम करते हैं। यदि आप एक सफेद पृष्ठभूमि पर काले अक्षर चाहते हैं, तो आप इसका उपयोग करेंगे:
{{black|white|This text is black on white}}
केवल एक पृष्ठभूमि रंग प्राप्त करने के लिए, अग्रभूमि को छोड़ दें:
{{|red|This text has a red background}}
विशिष्टता
दो खुले घुंघराले कोष्ठक हमेशा एक रंग निर्देश की शुरुआत को निर्दिष्ट करते हैं । दो समापन घुंघराले कोष्ठक अंत निर्दिष्ट करते हैं। ब्रैकेट हमेशा मेल खाएंगे; वहाँ {{एक इसी के बिना कभी नहीं होगा }}, और }}अपनी इसी से पहले कभी नहीं आएगा {{। इन रंग निर्देशों को नस्ट नहीं किया जाएगा, और {{रंग निर्देशन में कभी दिखाई नहीं देगा।
एक रंग निर्देश के भीतर, हमेशा एक या दो |प्रतीक होंगे। यदि एक है, तो पाठ से पहले यह अग्रभूमि रंग है और पाठ उस रंग में दिखाने के लिए स्ट्रिंग है। यदि दो हैं, तो पहले वाले पाठ से पहले अग्रभूमि रंग है, पाठ पहले के बाद लेकिन दूसरे से पहले पृष्ठभूमि का रंग है, और दूसरे के बाद का पाठ प्रदर्शित करने के लिए स्ट्रिंग है। ये ऊर्ध्वाधर पट्टियाँ एक रंग निर्देश के बाहर मौजूद हो सकती हैं, और इसे शाब्दिक रूप से मुद्रित किया जाना चाहिए।
अग्रभूमि रंग या पृष्ठभूमि रंग (लेकिन दोनों नहीं) खाली हो सकता है, जिस स्थिति में आपको उन्हें डिफ़ॉल्ट के रूप में छोड़ देना चाहिए। अंतिम स्ट्रिंग (आउटपुट में एक) कभी खाली नहीं होगी।
यहां एक निश्चित रंग के टेक्स्ट को आउटपुट करने की दिशाएं दी गई हैं:
एक रंग अनुक्रम "विवरण" खंड में परिभाषित किया गया है। उदाहरण के लिए, 42 का रंग क्रम होगा
"\e[42m"।रंग सेट करने के लिए, नीचे निर्धारित संख्या का रंग क्रम प्रिंट करें:
Color name | Color sequence number (foreground / background) --------------+---------- black | 30 / 40 red | 31 / 41 green | 32 / 42 yellow | 33 / 43 blue | 34 / 44 magenta | 35 / 45 cyan | 36 / 46 lightgray | 37 / 47 darkgray | 90 / 100 lightred | 91 / 101 lightgreen | 92 / 102 lightyellow | 93 / 103 lightblue | 94 / 104 lightmagenta | 95 / 105 lightcyan | 96 / 106 white | 97 / 107रंग नाम केस संवेदी हैं, और अमान्य रंग नाम कभी प्रदान नहीं किया जाएगा। आपको (
REDया केlightgreyसाथ वर्तनीe) जैसे सामान को संभालने की आवश्यकता नहीं है ।आपके द्वारा रंग क्रम मुद्रित करने के बाद, यह उसके बाद के सभी पाठ के लिए लागू होगा। एक रंग अनुक्रम (डिफ़ॉल्ट रंग पर रीसेट) को समाप्त करने के लिए,
0("\e[0m") के रंग अनुक्रम को आउटपुट करें ।
परीक्षण का मामला
{{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }} {{red|'}} {{red|'}} {{|yellow| }}
{{|yellow| }} \_/ {{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }}
यह एक स्माइली चेहरे का उत्पादन करना चाहिए ... बुरी लाल आंखों के साथ।
नियम
हो सकता है कि आप किसी रंग को पार्स करने के लिए अपनी प्रोग्रामिंग लैंग्वेज के किसी भी लाइब्रेरी या फंक्शन का इस्तेमाल न करें। इसका मतलब यह है कि आप का
"red"मतलब निर्धारित करने के लिए एक होना चाहिए ; आपके पास अपने लिए एक पुस्तकालय नहीं है।यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाएगा!
\n\[\e[32m\]\w\n\[\e[0m\]> उससे चोरी करने की कोशिश की (हरी निर्देशिका का नाम, अगली पंक्ति पर सादा संकेत), लेकिन मैं इसे किसी प्रोग्राम से काम करने की कोशिश नहीं कर सकता (अभी तक अजगर और जावा की कोशिश की)। कोई विचार?
echo -e "\e[31mtest\e[0m"।
youलाक्षणिक your programरूप से इसका मतलब है (जैसा कि एक लाइब्रेरी फंक्शन के लिए कॉल का विरोध किया जाता है), और यह कि वह determineउस अर्थ में लेते हैं , जैसे कि figure outनहीं choose। यानी, यह आपका कार्यक्रम है जिसे मानचित्रण को संभालना चाहिए: स्ट्रिंग ("लाल") | -> पूर्णांक (31)। redकेवल 31इसलिए कि वह ऐसा कहता है, उस जानकारी को कार्यक्रम में एकीकृत करने की आवश्यकता है। हालाँकि, यह तर्क दिया जा सकता है कि वास्तव में क्या गिना जाएगा your program- क्या हम सामान्य प्रयोजन स्ट्रिंग हेरफेर कार्यों का उपयोग कर सकते हैं? - धोखा / गाली न दें।


