如今,终端是如此无聊。他们以前看起来像这样:
现在它们只是平淡无奇,黑白相间。我想让您编写一个程序,使我的终端再次丰富多彩!
描述
请看以下示例Ruby代码:

大多数Linux终端都支持这些转义序列(\e代表转义字符),而Windows可以通过ANSICON支持它们。这是可以更改字符串的文本或背景颜色的特定转义序列的语法:
\e[{{COLOR}}m
其中\e代表转义字符(0x1B以ASCII表示),{{COLOR}}并由您要使用的颜色编号代替(稍后会有更多详细信息)。在此转义序列之后的文本将按照指示进行格式设置,值0将会重置所有格式。
您的挑战是采用一个字符串来指定一些可能包含颜色的文本,并输出彩色版本。
输入输出
普通文本的工作原理与普通文本相同,并且按字面意义打印。例如,输入waffles产生相同的输出,没有特殊的颜色。
指定颜色的语法类似于Wikipedia的语法。例如,要将句子中的“红色”这个词涂成红色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}}
规格
两个大括号始终指定color伪指令的开头。两个右花括号指定结尾。括号将始终匹配;永远不会有一个{{没有相应的}},和}}其相应的前永远不会到来{{。这些颜色指令不会嵌套,并且a {{永远不会出现在颜色指令内。
在color指令中,将始终有一个或两个|符号。如果有一个,则其前的文本是前景色,而后的文本是该颜色下显示的字符串。如果有两个,则第一个之前的文本是前景色,第一个之后但第二个之前的文本是背景色,第二个之后的文本是要显示的字符串。这些垂直条可能位于color指令之外,应按字面意义进行打印。
前景色或背景色(但不是全部)可能为空,在这种情况下,应将其保留为默认值。最后的字符串(要输出的字符串)永远不会为空。
以下是输出某种颜色的文本的说明:
甲颜色序列被“描述”一节中所定义。例如,颜色序列为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\]> (绿色目录名称,下一行为普通提示),但是我无法从程序中使用它(到目前为止尝试过python和Java)。有任何想法吗?
echo -e "\e[31mtest\e[0m"。
lolcat。
you他是用比喻的方式your program(而不是调用库函数),并且他determine的意思是figure out,而不是choose。即,应该由您的程序处理映射:String(“ red”)|-> Integer(31)。red只是31因为他这么说,所以信息需要集成到程序中。尽管可能会争论到底是什么your program-我们可以使用通用的String操纵函数吗?-不要公然作弊/滥用。


