Terminal sangat membosankan akhir-akhir ini. Mereka dulu terlihat seperti ini:
Sekarang mereka hanya hambar dan kusam dan hitam-putih. Saya ingin Anda menulis saya sebuah program yang akan membuat terminal saya semua berwarna lagi!
Deskripsi
Ambil contoh ini kode Ruby:

Sebagian besar terminal Linux mendukung urutan pelarian ini ( \esingkatan dari karakter pelarian), dan Windows dapat mendukungnya dengan ANSICON . Berikut adalah sintaks dari urutan escape spesifik yang dapat mengubah teks atau warna latar belakang string:
\e[{{COLOR}}m
di mana \esingkatan karakter pelarian ( 0x1Bdalam ASCII) dan {{COLOR}}diganti dengan jumlah warna yang ingin Anda gunakan (detail lebih lanjut tentang itu nanti). Teks yang muncul setelah urutan pelarian ini akan diformat seperti yang diarahkan, dan nilai 0akan mengatur ulang semua pemformatan.
Tantangan Anda adalah mengambil string yang menentukan beberapa teks yang mungkin mengandung warna, dan menampilkan versi warna-warni.
Input output
Teks normal berfungsi seperti biasa, dan dicetak secara harfiah. Misalnya, input wafflesmenghasilkan output yang sama, tanpa warna khusus.
Sintaksis untuk menentukan warna mirip dengan sintaksis Wikipedia . Misalnya, untuk mewarnai kata "warna merah" dengan warna merah dalam kalimat This is the color red!, inputnya adalah:
This is {{red|the color red}}!
Warna latar juga berfungsi. Jika Anda ingin huruf hitam dengan latar belakang putih, Anda akan menggunakan ini:
{{black|white|This text is black on white}}
Untuk hanya mendapatkan warna latar belakang, abaikan latar depan:
{{|red|This text has a red background}}
Spesifikasi
Dua kurung keriting terbuka selalu menentukan awal dari arahan warna . Dua kurung keriting penutup menentukan akhir. Kurung akan selalu cocok; tidak akan pernah ada {{tanpa yang sesuai }}, dan }}tidak akan pernah datang sebelum yang sesuai {{. Ini arahan warna tidak akan bersarang, dan {{tidak akan pernah muncul dalam direktif warna.
Dalam arahan warna, akan selalu ada satu atau dua |simbol. Jika ada satu, teks sebelum itu adalah warna foreground dan teks sesudahnya adalah string untuk ditampilkan dalam warna itu. Jika ada dua, teks sebelum yang pertama adalah warna latar depan, teks setelah yang pertama tetapi sebelum yang kedua adalah warna latar belakang, dan teks setelah yang kedua adalah string untuk ditampilkan. Bilah vertikal ini mungkin ada di luar arahan warna, dan harus dicetak secara harfiah.
Warna latar depan atau warna latar belakang (tetapi tidak keduanya) mungkin kosong, dalam hal ini Anda harus membiarkannya sebagai default. String terakhir (yang akan di-output) tidak akan pernah kosong.
Berikut adalah petunjuk untuk menampilkan teks dengan warna tertentu:
Sebuah urutan warna didefinisikan dalam bagian "Keterangan". Misalnya, urutan warna 42 akan menjadi
"\e[42m".Untuk mengatur warna, cetak urutan warna dari angka yang ditentukan di bawah ini:
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 / 107Nama warna peka huruf besar-kecil, dan nama warna yang tidak valid tidak akan pernah diberikan. Anda tidak harus menangani hal-hal seperti
REDataulightgrey(dieja dengane).Setelah Anda mencetak urutan warna, itu akan berlaku untuk semua teks yang mengikutinya. Untuk mengakhiri urutan warna (reset ke warna default), output urutan warna
0("\e[0m").
Kasus cobaan
{{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }} {{red|'}} {{red|'}} {{|yellow| }}
{{|yellow| }} \_/ {{|yellow| }}
{{|yellow| }} {{|yellow| }}
{{|yellow| }}
Ini akan menghasilkan wajah tersenyum ... dengan mata merah jahat.
Aturan
Anda tidak dapat menggunakan perpustakaan atau fungsi bahasa pemrograman Anda untuk secara otomatis mengurai warna. Ini berarti bahwa Anda harus menjadi orang yang menentukan apa
"red"artinya; Anda tidak dapat memiliki perpustakaan secara otomatis untuk Anda.Ini adalah kode-golf , jadi kode terpendek dalam byte akan menang!
\n\[\e[32m\]\w\n\[\e[0m\]> (nama direktori hijau, prompt cepat di baris berikutnya), tapi saya tidak bisa membuatnya berfungsi dari sebuah program (mencoba python dan Java sejauh ini). Ada ide?
echo -e "\e[31mtest\e[0m".
youdia secara kiasan berarti your program(sebagai lawan dari panggilan ke fungsi perpustakaan), dan bahwa dia determinememahami arti figure out, bukan seperti dalam choose. Yaitu, program Anda yang harus menangani pemetaan: String ("red") | -> Integer (31). redhanya 31karena dia berkata begitu, bahwa informasi perlu diintegrasikan ke dalam program. Meskipun mungkin diperdebatkan dengan tepat apa yang akan dihitung your program- bisakah kita menggunakan fungsi manipulasi String tujuan umum? - jangan curang / menyalahgunakan.


