Berurusan dengan warna dalam bahasa non-markup sering memperumit masalah. Saya ingin melihat beberapa variasi tentang bagaimana warna digunakan dalam berbagai bahasa.
Objek dari kompetisi ini adalah untuk menampilkan 'Hello World' dalam tujuh warna pelangi.
Menurut Wikipedia, ini adalah 7 warna.
Red #FF0000 (RGB: 255, 0, 0)
Orange #FF7F00 (RGB: 255, 127, 0)
Yellow #FFFF00 (RGB: 255, 255, 0)
Green #00FF00 (RGB: 0, 255, 0)
Blue #0000FF (RGB: 0, 0, 255)
Indigo #6600FF (RGB: 111, 0, 255)
Violet #8B00FF (RGB: 143, 0, 255)
Aturan
- Program harus menampilkan 'Hello World'. (Tidak harus berupa teks, tetapi harus dibedakan sebagai 'Hello World')
- Setiap huruf harus memiliki warna yang berbeda.
- Warna bisa dalam urutan apa pun.
- Anda harus menggunakan masing-masing dari tujuh warna setidaknya satu kali. (Anda dapat menggunakan lebih dari warna yang diberikan)
- Tidak ada penggunaan bahasa markup dalam hal apa pun .
Pemenangnya adalah siapa pun yang memiliki jumlah karakter terendah DAN mengikuti aturan
Bonus -1 karakter jika ditulis dalam DART
Saya akan memilih pemenang pada 11 Januari (jika saya ingat; D).
Semoga berhasil
PEMENANG
Saya membuat kesalahan D :, pemenang yang diperbarui.
1 stranac - Python, 60 karakter
Ke-2 Ilmari - Karonen Perl + GD, 146 karakter
Panjang terpendek dengan semua aturan dipatuhi.
Brownie menunjuk ke JiminP untuk jawaban DART.
sumber
H
dicetak menggunakan kode escape untuk warna hitam, sehingga tidak terlihat di sebagian besar terminal.Mathematica
Saya tahu, saya tahu, itu tidak sesuai dengan aturan .. tapi saya harus mencoba bermain dengan fungsi pemrosesan gambar Mathematica.
Tangkapan layar:
sumber
Haskell, 88 karakter
Perhatikan bahwa ini menggunakan warna terminal ANSI, yang hanya ada 6 dan mereka mungkin tidak cocok dengan yang diberikan (tergantung pada pengaturan terminal), jadi saya sedikit menekuk aturan di sini.
Versi sedikit lebih panjang dengan warna yang hampir benar, 107 karakter
Versi ini menggunakan warna xterm bukan yang ANSI. Ini tidak bergantung pada palet khusus, dan menggunakan warna terdekat yang bisa saya temukan di palet xterm 256-warna.
sumber
Python, 261 karakter
Menerapkan spesifikasi dengan tepat, menghasilkan gambar ppm. Inilah hasilnya, dikonversi menjadi gif dan ditingkatkan dengan faktor 4:
sumber
n=255;C=((n,0,0),(n,127,0),(n,n,0),(0,n,0),(0,0,n),(111,0,n),(143,0,n))
Perl -> terminal ANSI, 53 karakter
Ini menghasilkan output yang sama persis dengan solusi Haskell Hammar . Ini menggunakan
say
, jadi perlu perl 5.10+ dan-M5.010
(atau-E
) beralih. Untuk perl yang lebih lama, gantisay
denganprint
. Pengurangan satu karakter sepele dapat dicapai dengan mengganti\e
dengan karakter ESC literal, tetapi itu akan membuat kode lebih sulit untuk dibaca dan diedit.Sunting: Menambahkan dua karakter untuk mencocokkan keluaran Hammar dengan tepat, dan untuk benar-benar menunjukkan keenam warna terminal yang mungkin. (Dalam versi sebelumnya, satu-satunya karakter yang dicetak dalam warna 6 = cyan adalah spasi.)
Tangkapan layar:
Sunting 2: Jika menggunakan palet terminal khusus (dan garis bawah untuk ruang) diizinkan, maka saya dapat dengan mudah mereproduksi warna tepat yang diberikan dalam spesifikasi hanya dengan 50 karakter:
Tangkapan layar:
sumber
Perl -> HTML, 99 karakter
Tangkapan layar:
HTML mungkin tidak akan melewati validator apa pun, tetapi harus dipahami oleh hampir semua browser. Kode ini tidak menghasilkan warna RGB persis seperti yang Anda daftarkan, tetapi sangat dekat. Secara khusus, warna huruf adalah:
Outputnya terlihat jauh lebih bagus pada latar belakang hitam, tetapi secara eksplisit mencetak saya
<body bgcolor=black>
akan dikenakan biaya 28 karakter tambahan. Anda dapat menyesuaikan pengaturan browser Anda untuk mendapatkan efek yang sama. :-)sumber
Perl + GD, 146 karakter
Per komentar untuk jawaban saya yang lain , inilah solusi yang secara langsung menghasilkan file gambar menggunakan pustaka GD:
Dan inilah hasilnya:
Sekali lagi, menggunakan latar belakang hitam akan terlihat lebih baik, tetapi akan dikenakan biaya 29 karakter (
$m->bgcolor(0,0,0);$m->clear;
).Sunting: Menemukan cara mencukur 20 karakter dengan (ab) menggunakan notasi objek tidak langsung dan beberapa penyesuaian lainnya. Kode baru memancarkan peringatan, tetapi masih berjalan dengan baik.
sumber
Catatan tambahan
155143Ini bergantung pada kemampuan Ghostscript untuk "mencari tahu" bahwa Palatino adalah kependekan dari Palatino-Roman.
sumber
Beberapa pendekatan berbeda untuk melakukan ini
Nota bene
Pertama: Yang terpendek ( 89 ):
Tidak golf:
Ini terus berubah warna dalam arah x menggunakan ruang warna hsb. (Ide untuk menggunakan warna hsb dan kshow dikreditkan ke luser droog - lihat entri nya!) Ini tidak menggunakan tujuh warna yang diberikan oleh MrZander.
Ketika membatasi diri saya pada warna-warna MrZander, saya sampai di sana menggunakan 141 karakter:
Ini mengkodekan nilai rona warna MrZander sebagai satu byte dalam rentang ASCII yang dapat dicetak. Byte ini diterjemahkan ke nilai rona dalam kisaran antara 0 dan 1 dengan mengurangi 32 dan membaginya dengan 166. Setiap karakter dari string "Hello World" diikuti oleh nilai rona yang dikodekan.
Tidak golf:
TODO : Ada yang tidak beres dengan warnanya.
sumber
Beberapa curang tetapi menyelesaikan masalah
Bash + Ruby (butuh
lolcat
permata)sumber
Dart ke HTML,
135134-1 = 133main(){for(var s="Hello World",i=0;i<11;print("<font color=#${'F00F60FB0FF06F00F00B606B00F60F90F'.substring(i*3,i*3+3)}>${s[i++]}"));}
Apakah ada cara untuk mewarnai teks tanpa menggunakan bahasa markup? Saya tidak dapat menguji kanvas ...
sumber
Saya tahu ada tulisan "no markup", tapi saya ingin mengirimkan CSS ini dalam 468 karakter:
Tidak ada gaya yang dilakukan dengan markup.
sumber
Rubi
242 cara lebih prosedural:
Jika saya berhasil memikirkan cara yang lebih baik untuk menghasilkan warna saya akan. Beberapa yang tengah saya hanya melakukan beberapa trial and error untuk mendapatkan warna dekat.
sumber