Sistem yang berbeda memiliki cara yang berbeda untuk menggambarkan warna, bahkan jika semuanya berbicara dalam ruang RGBA. Pengembang front-end yang terbiasa dengan CSS mungkin lebih suka #RRGGBBAA
. Tetapi pengembang Android mungkin lebih suka #AARRGGBB
. Saat menangani format file AAS, #AABBGGRR
diperlukan. Itu terlalu membingungkan. Mungkin kita memerlukan program yang dapat mengkonversi antara berbagai format warna.
Memasukkan:
Input berisi 3 bagian:
- Warna yang akan diubah (misalnya
#1459AC0F
), sebuah string dimulai dengan tanda tajam#
diikuti oleh 8 digit hex. - Format warna yang diberikan (misalnya
#RRGGBBAA
), sebuah string yang dimulai dengan#
diikuti oleh 8 huruf yang terbagi dalam 4 grup yang berbeda dan masing-masing grup adalah salah satu dariRR
/GG
/BB
/AA
. - Format untuk dikonversi menjadi.
Keluaran:
- Keluarkan warna dalam format yang dikonversi
Kasus uji:
Color, OriginalFormat, TargetFormat -> Result
#12345678, #RRGGBBAA, #AARRGGBB -> #78123456
#1A2B3C4D, #RRGGBBAA, #AABBGGRR -> #4D3C2B1A
#DEADBEEF, #AARRGGBB, #GGBBAARR -> #BEEFDEAD
Input / output tidak sensitif huruf. Anda dapat input / output dengan cara apa pun yang dapat diterima.
Aturan:
Ini adalah kode golf, kode terpendek (dalam byte) dari setiap bahasa yang menang
AARRGGBB
secara objektif adalah format warna terbaik. Jika sesuatu mengharapkan 24 bitRRGGBB
dan Anda memberikannya 32 bitAARRGGBB
, ia dapat mengabaikan byte atas dan masih berfungsi.Jawaban:
APL (Dyalog Unicode) , 6 byte SBCS
program penuh. Anjuran pada STDIN untuk Asli, lalu Target, lalu Warna. Mencetak Hasil ke STDOUT.
Cobalah online!
⍞
meminta untuk Asli⍞⍋
meminta Target dan menemukan indeks menjadi Asli yang akan membuat Asli menjadi Target⍞[
…]
Meminta Warna dan menggunakan indeks yang diperoleh di atas untuk menyusun ulang Warnasumber
JavaScript (ES6),
5352 byteDisimpan 1 byte berkat @tsh
Mengambil input sebagai 3 parameter yang berbeda:
(Color, From, To)
.Cobalah online!
sumber
(C,F,T)=>T.replace(/\w/g,(x,i)=>C[F.search(x)-~i%2])
simpan satu byteStax , 8 byte
Jalankan dan debug itu
Program ini mengambil input dalam format ini.
Inilah versi unpacked yang belum dikomentari yang dikomentari dari program yang sama.
Jalankan yang ini
sumber
Python 2 , 59 byte
Cobalah online!
sumber
Retina 0.8.2 , 33 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Untuk setiap pasangan karakter identik, lihat kembali untuk salinan pasangan itu, dan kemudian karakter ke-9 dan ke-8 sebelum itu, dan ganti pasangan dengan karakter tersebut. Ini hanya mungkin untuk pasangan karakter dalam format target, dan menggantinya dengan hasil yang diinginkan.
Hapus warna dan format sumber.
sumber
Haskell ,
108 104 100 9487 byteCobalah online!
Versi lama
Terima kasih kepada Laikoni untuk mempersingkat 6 byte dengan menemukan cara yang lebih singkat untuk digunakan
lookup
!Cobalah online!
Penjelasan:
p
fungsi "mem-parsing" string dengan mengabaikan terkemuka#
kelompok dan kembali (daftar) dari 2 chars.(!)
Operator mengambil sebagai masukan warna dan format input dan mengembalikan fungsi yang mengambil sebagai parameter format output dan mengembalikan warna dikonversi. Ternyata versi pointfree lebih pendek, tetapi saya mulai dengan versi yang lebih mudah dibaca:f c i o='#':concat[x#zip(p<$>[i,c])|x<-p o]
Cobalah online!
sumber
Perl 5
-p
,333227 byteBerikan input dalam urutan: target, asli, nomor
Cobalah online!
Untuk setiap karakter dalam input temukan karakter yang sama sejumlah tempat maju kemudian dari sana pergi 10 karakter lebih maju dan mengambil karakter itu sebagai pengganti. Jika Anda tidak dapat melakukan langkah-langkah ini, ganti dengan nol.
sumber
05AB1E , 10 byte
Cobalah online!
Ini berfungsi karena saya mengubah input dari:
Untuk:
Jadi setiap nilai dipetakan secara unik, maka saya bisa menggunakan transliterate.
Argumen dibalik.
sumber
Java 10,
179105102 byteKekalahan -77 byte berkat @ OlivierGrégoire .
Penjelasan:
Cobalah online.
sumber
J , 5 byte
Argumen kiri adalah warna. Argumen yang tepat adalah matriks karakter di mana baris pertama adalah format target dan baris kedua adalah format asli. Cobalah online!
sumber
CJam, 14 byte
Cobalah secara Online!
Input adalah array dalam urutan terbalik.
sumber
Python 2, 62 byte
sumber
SmileBASIC, 144 byte
sumber
Merah ,
154 120114 byteCobalah online!
sumber
Python 3 , 102 byte
Cobalah online!
sumber
Jelly , 6 byte
Cobalah online!
program penuh.
Argumen 1:
Argumen Asli 2:
Argumen Target 3: Warna
sumber
C (dentang) , 89 byte
Cobalah online!
Membawa nilai input dalam
a
, formati
keluar dan masuk formato
. Mengembalikan nilai dalamb
Cheat minor: menyimpan hasil
b
alih-alih mencetak untuk menghemat byte. Pertanyaan tidak melarangnya.C (dentang) , 100 byte
Cobalah online!
C (gcc) , 181 byte
Cobalah online!
MenciptakanRGBA
nilai dalamc[]
array berdasarkan formati
, lalu mencetak dalamo
formatsumber
char*a,b[10],*i,*o;f(x)
alih-alihchar *a,b[10],*i,*o;f(x,y)
danx+=2)bcopy(a+(long)index(i,o[x])-i,b+x,2);
bukannyab[x++]=a[y=index(i,o[x])-i],b[x++]=a[y+1]);
Clojure 1.8, 156 bytes
Tidak disatukan
Cobalah secara online tidak memiliki dukungan Clojure 1.8. Sangat aneh!
sumber
Perl 6 ,
555146 byteCobalah online!
Mengambil daftar (warna, asli, target) sebagai input. Pisahkan setiap string input menjadi komponen, buat kunci sumber pemetaan Hash ke nilai warna, cari nilai warna dalam urutan kunci target, lalu format hasilnya.
sumber