Терминалы такие скучные в наши дни. Раньше они выглядели так:
Теперь они просто мягкие, скучные и черно-белые. Я хочу, чтобы вы написали мне программу, которая сделает мой терминал снова красочным!
Описание
Возьмите этот пример кода Ruby:

Большинство терминалов Linux поддерживают эти escape-последовательности ( \eрасшифровывается как escape-символ), и Windows может поддерживать их с помощью ANSICON . Вот синтаксис конкретной escape-последовательности, которая может изменить цвет текста или фона строки:
\e[{{COLOR}}m
где \eобозначает escape-символ ( 0x1Bв ASCII) и {{COLOR}}заменяется номером цвета, который вы хотите использовать (более подробно об этом позже). Текст, который следует после этой escape-последовательности, будет отформатирован в соответствии с указаниями, а значение 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\]> (зеленое имя каталога, обычное приглашение на следующей строке), но я не могу заставить его работать из программы (пока пробовал python и Java). Любые идеи?
echo -e "\e[31mtest\e[0m".
youон образно подразумевает your program(в отличие от вызова библиотечной функции), и что он принимает determineв смысле figure out, а не в choose. То есть именно ваша программа должна обрабатывать отображение: String ("red") | -> Integer (31). redтолько 31потому, что он так говорит, эта информация должна быть интегрирована в программу. Хотя можно утверждать, что именно это считается your program- можем ли мы использовать универсальные функции манипулирования строками? - не нагло обманывать / оскорблять.


