Les terminaux sont tellement ennuyeux de nos jours. Ils ressemblaient à ceci:
Maintenant, ils sont juste fades et ternes et en noir et blanc. Je veux que vous m'écriviez un programme qui rendra mon terminal tout de nouveau coloré!
La description
Prenez cet exemple de code Ruby:

La plupart des terminaux Linux prennent en charge ces séquences d'échappement ( \esignifie le caractère d'échappement), et Windows peut les prendre en charge avec ANSICON . Voici la syntaxe de la séquence d'échappement spécifique qui peut changer la couleur du texte ou de l'arrière-plan d'une chaîne:
\e[{{COLOR}}m
où \ereprésente le caractère d'échappement ( 0x1Ben ASCII) et {{COLOR}}est remplacé par le numéro de la couleur que vous souhaitez utiliser (plus de détails à ce sujet plus tard). Le texte qui vient après cette séquence d'échappement sera formaté comme indiqué et une valeur de 0réinitialisera tout le formatage.
Votre défi consiste à prendre une chaîne spécifiant du texte pouvant contenir de la couleur et à en produire une version colorée.
Entrée sortie
Le texte normal fonctionne comme d'habitude et est imprimé littéralement. Par exemple, l'entrée wafflesdonne la même sortie, sans couleur spéciale.
La syntaxe pour spécifier une couleur est similaire à la syntaxe de Wikipedia . Par exemple, pour colorer les mots "la couleur rouge" en rouge dans la phrase This is the color red!, l'entrée serait:
This is {{red|the color red}}!
Les couleurs d'arrière-plan fonctionnent également. Si vous vouliez des lettres noires sur fond blanc, vous utiliseriez ceci:
{{black|white|This text is black on white}}
Pour obtenir uniquement une couleur d'arrière-plan, omettez le premier plan:
{{|red|This text has a red background}}
spécification
Deux accolades ouvertes indiquent toujours le début d'une directive de couleur . Deux accolades fermantes indiquent la fin. Les parenthèses correspondront toujours; il n'y aura jamais de {{sans correspondant }}, et un }}ne viendra jamais avant son correspondant {{. Ces directives de couleur ne seront pas imbriquées et a {{n'apparaîtra jamais dans une directive de couleur.
Dans une directive couleur, il y aura toujours un ou deux |symboles. S'il y en a un, le texte avant c'est la couleur de premier plan et le texte après est la chaîne à afficher dans cette couleur. S'il y en a deux, le texte avant le premier est la couleur de premier plan, le texte après le premier mais avant le second est la couleur d'arrière-plan et le texte après le second est la chaîne à afficher. Ces barres verticales peuvent exister en dehors d'une directive de couleur et doivent être imprimées littéralement.
La couleur de premier plan ou d'arrière-plan (mais pas les deux) peut être vide, auquel cas vous devez les laisser par défaut. La chaîne finale (celle à afficher) ne sera jamais vide.
Voici les instructions pour sortir du texte d'une certaine couleur:
Une séquence de couleurs est définie dans la section "Description". Par exemple, une séquence de couleurs de 42 serait
"\e[42m".Pour définir une couleur, imprimez la séquence de couleurs du nombre déterminé ci-dessous:
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 / 107Les noms de couleur sont sensibles à la casse et un nom de couleur non valide ne sera jamais fourni. Vous n'avez pas à gérer des choses comme
REDoulightgrey(orthographié avec une).Après avoir imprimé une séquence de couleurs, elle s'appliquera à tout le texte qui la suit. Pour terminer une séquence de couleurs (réinitialiser à la couleur par défaut), sortez une séquence de couleurs de
0("\e[0m").
Cas de test
{{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }} {{red|'}} {{red|'}} {{|yellow| }}
{{|yellow| }} \_/ {{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }}
Cela devrait produire un visage souriant ... avec des yeux rouges maléfiques.
Règles
Vous ne pouvez utiliser aucune bibliothèque ou fonction de votre langage de programmation pour analyser automatiquement une couleur. Cela signifie que vous devez être celui qui détermine ce que
"red"signifie; une bibliothèque ne peut pas le faire automatiquement pour vous.Il s'agit de code-golf , donc le code le plus court en octets gagnera!
\n\[\e[32m\]\w\n\[\e[0m\]> (nom de répertoire vert, invite simple sur la ligne suivante), mais je ne peux pas le faire fonctionner à partir d'un programme (essayé python et Java jusqu'à présent). Des idées?
echo -e "\e[31mtest\e[0m".
youil signifie au sens figuré your program(par opposition à un appel à une fonction de bibliothèque), et qu'il prend determinedans le sens de figure out, pas comme dans choose. C'est-à-dire que c'est votre programme qui doit gérer le mappage: String ("red") | -> Integer (31). redc'est seulement 31parce qu'il le dit, que l'information doit être intégrée au programme. Bien que l'on puisse dire exactement ce qui compterait your program- pouvons-nous utiliser des fonctions de manipulation de chaînes à usage général? - ne trichez / abusez pas ouvertement.


