I terminali sono così noiosi in questi giorni. Sembravano così:
Ora sono solo insipidi e opachi e in bianco e nero. Voglio che tu mi scriva un programma che renderà di nuovo tutto il mio terminale colorato!
Descrizione
Prendi questo esempio di codice Ruby:

La maggior parte dei terminali Linux supporta queste sequenze di escape ( \erappresenta il carattere di escape) e Windows può supportarle con ANSICON . Ecco la sintassi della specifica sequenza di escape che può cambiare il testo o il colore di sfondo di una stringa:
\e[{{COLOR}}m
dove \esta per il carattere di escape ( 0x1Bin ASCII) e {{COLOR}}viene sostituito dal numero del colore che si desidera utilizzare (maggiori dettagli su quello successivo). Il testo che segue questa sequenza di escape verrà formattato come indicato e un valore di 0reimposterà tutta la formattazione.
La tua sfida è quella di prendere una stringa specificando del testo che può contenere colore e produrre una versione colorata di esso.
Input Output
Il testo normale funziona esattamente come il normale e viene stampato letteralmente. Ad esempio, l'input wafflesproduce lo stesso output, senza colori speciali.
La sintassi per specificare un colore è simile alla sintassi di Wikipedia . Ad esempio, per colorare le parole "il colore rosso" in rosso nella frase This is the color red!, l'input sarebbe:
This is {{red|the color red}}!
Anche i colori di sfondo funzionano. Se volessi lettere nere su uno sfondo bianco, dovresti usare questo:
{{black|white|This text is black on white}}
Per ottenere solo un colore di sfondo, ometti il primo piano:
{{|red|This text has a red background}}
specificazione
Due parentesi graffe aperte specificano sempre l'inizio di una direttiva colore . Due parentesi graffe di chiusura specificano la fine. Le parentesi corrisponderanno sempre; non ci sarà mai un {{senza un corrispondente }}, e un }}non verrà mai prima del suo corrispondente {{. Queste direttive sul colore non verranno annidate e {{non appariranno mai all'interno di una direttiva sul colore.
All'interno di una direttiva colore, ci saranno sempre uno o due |simboli. Se ce n'è uno, il testo che precede è il colore di primo piano e il testo che segue è la stringa da mostrare in quel colore. Se ce ne sono due, il testo prima del primo è il colore di primo piano, il testo dopo il primo ma prima del secondo è il colore di sfondo e il testo dopo il secondo è la stringa da visualizzare. Queste barre verticali possono esistere al di fuori di una direttiva sui colori e devono essere stampate letteralmente.
Il colore di primo piano o di sfondo (ma non entrambi) potrebbe essere vuoto, nel qual caso dovresti lasciarli come predefiniti. La stringa finale (quella da emettere) non sarà mai vuota.
Ecco le indicazioni per l'output del testo di un determinato colore:
Una sequenza di colori è definita nella sezione "Descrizione". Ad esempio, una sequenza di colori di 42 sarebbe
"\e[42m".Per impostare un colore, stampare la sequenza di colori del numero determinato di seguito:
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 / 107I nomi dei colori fanno distinzione tra maiuscole e minuscole e non verrà mai fornito un nome di colore non valido. Non devi gestire cose come
REDolightgrey(scritte con une).Dopo aver stampato una sequenza di colori, verrà applicata per tutto il testo che la segue. Per terminare una sequenza di colori (ripristina il colore predefinito), genera una sequenza di colori di
0("\e[0m").
Caso di prova
{{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }} {{red|'}} {{red|'}} {{|yellow| }}
{{|yellow| }} \_/ {{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }}
Questo dovrebbe produrre una faccina sorridente ... con malvagi occhi rossi.
Regole
Non è possibile utilizzare alcuna libreria o funzione del proprio linguaggio di programmazione per analizzare automaticamente un colore. Ciò significa che devi essere tu a determinare cosa
"red"significa; non puoi avere una libreria che lo faccia automaticamente per te.Questo è code-golf , quindi vincerà il codice più breve in byte!
\n\[\e[32m\]\w\n\[\e[0m\]> (nome di directory verde, prompt semplice sulla riga successiva), ma non riesco a farlo funzionare da un programma (provato python e Java finora). Qualche idea?
echo -e "\e[31mtest\e[0m".
yoului figurato mezzi your program(al contrario di una chiamata a una funzione di libreria), e se ne assume determinenel senso di figure out, non come in choose. Cioè, è il tuo programma che dovrebbe gestire la mappatura: String ("red") | -> Intero (31). redè solo 31perché lo afferma, che le informazioni devono essere integrate nel programma. Sebbene si possa argomentare esattamente cosa significherebbe your program- possiamo usare le funzioni di manipolazione delle stringhe per scopi generici? - non imbrogliare / abusare palesemente.


