Kembali pada hari itu, semua anak-anak 1337 menggunakan fader teks di chatroom. Saya tidak tahu tentang kalian, tapi saya ingin merasa keren seperti mereka. Satu-satunya masalah adalah bahwa skrip dan aplikasi lama mereka sangat digabungkan dengan perangkat lunak yang mereka buat, jadi saya tidak bisa memanfaatkan fungsionalitas luar biasa ini di mana pun saya inginkan. Saya juga ingin solusinya mudah dibawa-bawa sehingga Anda harus membuat kode sekecil mungkin agar cocok dengan floppy disk saya (saya lebih suka hanya membawa satu floppy tetapi jika kode sumber Anda terlalu besar Saya dapat membawa lebih dari satu : P ).
Memasukkan
- Daftar warna (rgb, hex, nama, dll)
- Teks ke format
Program Anda harus mengharapkan daftar warna mengandung setidaknya 2 warna.
Teks ke format bisa lebih panjang dari nol dan karakter akan terbatas pada ascii yang dapat dicetak. (Petunjuk: Input teks yang lebih panjang mungkin mengharuskan Anda menggunakan kembali warna antara untuk karakter yang berurutan)
Keluaran
Teks keluaran tidak boleh berbeda dari teks input dengan cara apa pun selain font dan / atau markup / gaya (Catatan: jika output Anda berisi markup html maka Anda harus menyandikan input html). Anda dapat menampilkan teks dengan markup / gaya (tag gaya html, warna konsol, dll.) Atau gambar teks pudar. Semua heksa warna harus ada dalam output kecuali input tidak mengandung cukup karakter untuk memenuhi persyaratan ini. Jika demikian, bacalah aturan prioritas untuk menentukan heksa warna mana yang harus ada dalam output Anda. Urutan atau warna-warna ini dalam output Anda masih harus urutan input.
Aturan Prioritas Warna
- Jika input adalah satu karakter, warna pertama akan digunakan
- Jika hanya ada dua karakter, warna pertama dan terakhir akan digunakan
- Jika ada lebih dari tiga warna dan lebih banyak warna daripada karakter, warna pertama dan terakhir harus diprioritaskan, kemudian warna lainnya dalam urutan yang dimasukkan.
- Jika ada lebih banyak karakter daripada warna, karakter harus memudar dari satu warna ke warna berikutnya menggunakan warna antara
Contoh (Aturan prioritas 1-3 masing-masing):
# Warna | Warna 0 | ... | Warna n | Teks
3 ff0000 0000ff ffff00 M
-> -> ->
3 ff0000 0000ff ffff00 hi
4 ff0000 0000ff ffff00 0fff00 sup
Agar jelas, warna teks harus memudar dari satu hex warna ke yang berikutnya. Fade tidak harus seragam sempurna tetapi seharusnya tidak menjadi perubahan warna yang tiba-tiba kecuali tidak ada cukup karakter untuk memudar dengan baik. Secara umum fade ini dicapai dengan memilih warna antara untuk masing-masing karakter dengan menambah / mengurangi nilai rgb dengan beberapa interval yang ditentukan oleh jumlah karakter yang harus Anda kerjakan dan perbedaan antara warna. Sebagai contoh jika kita membutuhkan satu warna antara (# ff0000) dan (# 000000), kita dapat memilih karena ia berada tepat di tengah. Output optimal akan terlihat lebih cantik.
Contoh (Aturan prioritas 4):
3 ff0000 ff7f00 f0ff00 To be or not to be, that is the question...
->
-OR-
<span style="color:#ff0000;">T</span><span style="color:#ff0600;">o</span><span style="color:#ff0c00;"> </span><span style="color:#ff1200;">b</span><span style="color:#ff1800;">e</span><span style="color:#ff1e00;"> </span><span style="color:#ff2400;">o</span><span style="color:#ff2a00;">r</span><span style="color:#ff3000;"> </span><span style="color:#ff3600;">n</span><span style="color:#ff3c00;">o</span><span style="color:#ff4300;">t</span><span style="color:#ff4900;"> </span><span style="color:#ff4f00;">t</span><span style="color:#ff5500;">o</span><span style="color:#ff5b00;"> </span><span style="color:#ff6100;">b</span><span style="color:#ff6700;">e</span><span style="color:#ff6d00;">,</span><span style="color:#ff7300;"> </span><span style="color:#ff7900;">t</span><span style="color:#ff7f00;">h</span><span style="color:#fe8500;">a</span><span style="color:#fe8b00;">t</span><span style="color:#fd9100;"> </span><span style="color:#fc9700;">i</span><span style="color:#fb9d00;">s</span><span style="color:#fba400;"> </span><span style="color:#faaa00;">t</span><span style="color:#f9b000;">h</span><span style="color:#f9b600;">e</span><span style="color:#f8bc00;"> </span><span style="color:#f7c200;">q</span><span style="color:#f6c800;">u</span><span style="color:#f6ce00;">e</span><span style="color:#f5d400;">s</span><span style="color:#f4da00;">t</span><span style="color:#f4e100;">i</span><span style="color:#f3e700;">o</span><span style="color:#f2ed00;">n</span><span style="color:#f1f300;">.</span><span style="color:#f1f900;">.</span><span style="color:#f0ff00;">.</span>
Dalam jawaban Anda, harap tentukan bagaimana output Anda harus ditampilkan (sebagai html, di konsol, sebagai gambar, dll.).
* Semua latar belakang hitam hanya untuk penekanan warna dan tidak diperlukan
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang.
Jika Anda berhasil menambahkan fade ke masing-masing karakter maka saya akan selamanya berpikir Anda keren (tapi tidak ada bonus untuk dinilai karena ini tidak adil untuk beberapa permainan)
#000000
dan#ff0000
tidak#800000
.000000
danff0000
seharusnyab40000
(255*sqrt((0+1)/2)
)Jawaban:
JavaScript (ES6), 290 byte
sumber
Pyth, 126 byte
Rata-rata rata-rata akar-kuadrat wajib bukannya rata-rata aritmatika langsung.
Cobalah online!
Output sampel:
sumber
Java,
702662 karakterDua fungsi golf:
Karena tidak ada yang bisa membaca ini: di sini ada dua fungsi dalam versi yang tidak diklik di kelas:
Di sini Anda memiliki batas atas untuk kode Anda sendiri. Penggunaan adalah dengan memanggil
colorize
(atau c dalam versi golf) dan meneruskan teks dan array kode warna hex. Fungsi ini akan mengembalikan String dengan tag-HTML seperti OP, sehingga Anda perlu beberapa cara untuk merender HTML.Algoritma lebih mudah seperti pertanyaannya. Karakter pertama selalu mendapatkan warna pertama, yang terakhir selalu yang terakhir.
Jika kita memiliki lebih banyak warna daripada karakter dalam teks, kita hanya beralih pada teks dan warna dan menerapkannya.Bagian yang menyenangkan adalah bagian yang pudar: Saya mulai dengan mencari tahu pada jarak berapa warna pada teks. Saya pada dasarnya menghitung perbedaan merah, hijau dan biru antara dua warna yang diberikan dan kemudian menambahkan bagian dari perbedaan ini ke warna pertama, tergantung di mana char berada di antara warna. Jika meninggalkan interval dua warna, kita mulai dari yang baru dengan dua warna berikutnya. Ini diulang untuk semua kecuali karakter terakhir, yang kita tahu selalu warna terakhir. Ini memberikan pudar yang sangat indah.Pertanyaan itu sangat menyenangkan! Terima kasih!
Pembaruan
Sekarang saya tidak menangani semua kasing khusus. Alih-alih, saya memotong warna jika ada dua dan menerapkan fungsi fade ke setiap string. Jika ada lebih banyak warna daripada teks maka warna akan dipangkas dan fungsi fading akan bekerja persis seperti pemetaan sederhana.
sumber