Dunia seni penuh warna, tetapi dunia jaringan bahkan lebih penuh daripada dunia seni warna yang berbeda dan renderingnya. Itu sebabnya kita perlu tahu bagaimana mengkonversi satu jenis format warna ke yang lain.
Tantangannya jelas:
Tulis program / fungsi daripada mengonversi kode HEX yang diberikan ( #00ff0080
, misalnya) ke RGBA (seperti rgba(0, 255, 0, 0.5)
).
Aturan:
- Pustaka / built-in eksternal untuk mengonversi HEX ke RGBA tidak diizinkan. Namun, pengganti jQuery dan sintaksis seperti itu dapat diterima.
- Aturan Input / Output standar berlaku.
- Format alfa bisa antara (1 == 100%) atau yang lain (100 == 100%) itu tidak terlalu penting.
- Outputnya fleksibel , asalkan mengembalikan 4 nilai yang dikonversi (sebagai String, Array, List, pilihan Anda).
- Anda dapat memilih untuk mengambil input tanpa
#
di awal. Karenanya, Anda dapat mengambil input baik sebagai#RRGGBBAA
atauRRGGBBAA
. Anda dapat mengasumsikan bahwa kode hex (tidak termasuk#
) akan selalu sepanjang 8 karakter. - Anda harus membagi semua nilai dengan 255, termasuk alfa. Ketepatan desimal minimum (untuk alpha akan menjadi 2 tempat desimal).
Uji Kasus
Input: 00ff0080
Output: 0, 255, 0, 0.5
Mencetak gol
kode-golf , kode dengan jumlah byte terkecil yang menang.
code-golf
base-conversion
conversion
hexadecimal
color
Obsdarek
sumber
sumber
#
, dalam hal ini hanya akan menjadi nilai integer 32-bit. Apakah sah untuk menganggapnya demikian?Jawaban:
JavaScript (ES6),
735450 byte(Menyimpan beberapa byte berkat @LeakyNun, tantangan yang diedit, dan @CraigAyre.)
sumber
eval
alih-alihparseInt
:s=>s.match(/../g).map((x,i)=>eval('0x'+x)/(i-3?1:255))
eval
adalah alternatif yang bagusparseInt
untuk keperluan golf, terima kasih!/../g
. Anda mungkin dapat menguranginya lebih jauh dengan menggunakanreplace
lebih darimatch
/map
Japt , 13 byte
Mengambil input sebagai string, tanpa yang memimpin
#
. Output nilai rgba sebagai array.Menguji
Penjelasan
Kami secara implisit mengambil string sebagai input melalui variabel
U
."00ff0080"
Pisahkan string menjadi array elemen dengan panjang 2.
["00","ff","00","80"]
Peta di atas array dan konversi setiap elemen dari string basis 16 ke angka desimal. Karena baris baru berikut ini, array itu secara implisit ditugaskan ke variabel
U
.[0,255,0,128]
Pop elemen terakhir dari array.
128
Membaginya dengan 255.
0.5019607843137255
Dorong hasilnya kembali ke dalam
U
lalu secara implisit mengeluarkan array terakhir.[0,255,0,0.5019607843137255]
sumber
PHP , 63 byte
Keluaran sebagai array
Cobalah online!
PHP , 80 byte
Output sebagai nilai rgba, Input tanpa
#
Cobalah online!
PHP , 88 byte
Output sebagai nilai rgba, Input dengan
#
Cobalah online!
sumber
C (gcc) , 139 byte
Cobalah online!
Upaya saya yang lain mencatatkan 145 byte . Saya tidak terlalu pegolf C, jadi ini mungkin bisa lebih pendek.
sumber
05AB1E , 9 byte
Cobalah online!
Setidaknya kami memiliki pendukung seperti Emigna yang sering menggunakan akal sehat ... (itulah yang Anda dapatkan untuk bermain golf sepanjang hari dan kemudian Anda mulai memproduksi barang-barang seperti
2ô16öRć255/¸ìR
ಠ_ಠ)sumber
2ôH`žz/)
Jelly ,
1514 byteCobalah online!
Bagaimana itu bekerja
-1 byte terima kasih kepada @EricTheOutgolfer
sumber
PHP, 72 byte
Versi keluaran array Jörg tidak terkalahkan; tetapi ada opsi lain:
Jalankan sebagai pipa dengan
-F
.#
tidak masalah, output csv polosatau 73 byte (dijalankan dengan
-R
):74 byte dengan spasi:
tidak begitu polos, 81 byte :
sumber
Ditumpuk ,
474541 byteCobalah online!
sumber
Excel, 99 byte
sumber
SmileBASIC, 50 byte
String heksadesimal dikonversi ke angka menggunakan VAL (), kemudian RGBREAD mengekstrak setiap byte. #L adalah konstanta dengan nilai 256.
RGBREAD dirancang untuk mengekstrak saluran dari warna ARGB, tetapi sebenarnya hanya membagi integer 4 byte menjadi 4 byte terpisah, sehingga urutannya tidak masalah.
sumber
Perl 6 , 42 byte
Cobalah online!
sumber
JS ES2015, 84 byte
ini sebuah fungsi. Jalankan menggunakan
sumber
Python 3 , 62 byte
Cobalah online!
sumber
q / kdb +, 43 byte
Larutan:
Contoh:
Penjelasan:
sumber
APL (Dyalog) , 24 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem. Meminta input sebagai huruf besar tanpa#
.Cobalah online!
⎕D,⎕A
D igits diikuti oleh A lphabet⍞⍳⍨
meminta input teks (mnemonik: konsol dengan kutipan) dan temukan ɩ ndex dari setiap huruf di dalamnya4 2⍴
r eshape sebagai empat baris dua kolom matriks⍉
transpose (karena konversi basis berfungsi secara kolom)16⊥
mengevaluasi sebagai basis enam belas⊢
hasil (berfungsi untuk memisahkan 3 dan 16)256÷⍨@3
bagilah elemen ke 4 dengan 256sumber
Python 2 , 54 byte
Cobalah online!
sumber
Yabasic , 96 byte
Namun jawaban mendasar lainnya ; Mengambil input sebagai string dan output ke konsol.
Cobalah online!
sumber
?
.Excel VBA, 90 byte
Fungsi jendela langsung VBE anonim yang mengambil input dari kisaran
[A1]
dan output ke jendela langsung VBE.sumber
Vim, 46 byte
Mengambil input tanpa
#
dan kembali dengan mencetak di layar.sumber