Triple triplet seperti #ffffff
(putih) atau #3764ef
(kebiru-biruan) sering digunakan untuk menunjukkan warna RGB. Mereka terdiri dari #
diikuti oleh enam digit heksadesimal (0-f), atau kadang-kadang tiga digit di mana warna asli diperoleh dengan menggandakan setiap digit. Sebagai contoh, #fff
adalah #ffffff
dan #1a8
sekarang #11aa88
.
Sayangnya, steno tiga digit itu adalah golf yang paling banyak ditawarkan di internet, sampai sekarang .
Tulis program atau fungsi yang mengambil string 1 hingga 7 karakter:
- Karakter pertama akan selalu seperti itu
#
. - Karakter lain akan selalu digit heksadesimal:
0123456789abcdef
.
Input adalah bentuk singkatan dari hex triplet (atau bentuk lengkap jika 7 karakter diberikan). Anda perlu mengeluarkan hex triplet penuh yang memperluas singkatan input berdasarkan pola-pola ini:
Input -> Output
# -> #000000 (black)
#U -> #UUUUUU
#UV -> #UVUVUV
#UVW -> #UUVVWW (usual 3-digit shorthand)
#UVWX -> #UXVXWX
#UVWXY -> #UVWXYY
#UVWXYZ -> #UVWXYZ (not shorthand)
Masing-masing U
, V
, W
, X
, Y
, dan Z
mungkin setiap heksadesimal digit. Output selalu 7 karakter.
Sebagai contoh:
Input -> Output
# -> #000000
#0 -> #000000
#4 -> #444444
#f -> #ffffff
#a1 -> #a1a1a1
#0f -> #0f0f0f
#99 -> #999999
#1a8 -> #11aa88
#223 -> #222233
#fff -> #ffffff
#1230 -> #102030
#d767 -> #d77767
#bbb5 -> #b5b5b5
#aabbc -> #aabbcc
#00000 -> #000000
#3764e -> #3764ee
#3764ef -> #3764ef
#123456 -> #123456
#f8f8f8 -> #f8f8f8
Catatan
Input akan selalu dimulai dengan
#
demikian juga output.Anda dapat menganggap semua huruf input adalah huruf kecil (
abcdef
) atau huruf besar (ABCDEF
) seperti yang Anda inginkan.Huruf dalam output mungkin dalam kedua kasus sesuai keinginan Anda. Anda bahkan dapat mencampur case.
Alpha / transparansi tidak dibahas di sini (meskipun ada versi hex warna RGBA).
Kode terpendek dalam byte menang.
sumber
#UVWXY -> #UVWXYY
entri karena memungkinkan untuk representasi nilai tunggal untuk saluran Biru, tetapi tidak ada ekspresi yang sama untuk Merah dan Hijau (misalnya jika saya ingin#889071
saya tidak dapat menyingkat, tetapi#907188
dapat ... seperti#90718
) yang lain semua bekerja dengan baik.#UVWX -> #UXVXWX
. Ini adalah perilaku yang tidak konsisten dan sewenang-wenang sehingga sulit untuk percaya bahwa tidak ada beberapa browser yang benar - benar mengimplementasikannya.#RGBA
dan#RRGGBBAA
, jadi # 1234 harus dibaca sebagairgba(17, 34, 51, 0.25)
Jawaban:
JavaScript,
868277 bytehanya mencari tahu bahwa menghapus rekursif menyimpan 4 byte ...
ide dari @Arnauld menyimpan 4 byte, +1 lebih banyak byte
sumber
([s,a=0,b=a,c,d,e,f]=x)=>f?x:e?x+e:d?s+a+d+b+d+c+d:c?s+a+a+b+b+c+c:s+a+a+a+b+b+b
untuk 80 byteReferenceError: x is not defined
Jelly , 24 byte
Program lengkap (baris kosong sebenarnya adalah baris kosong).
Cobalah online! atau lihat test suite *
Bagaimana?
* program test-suite harus diubah dengan menukar urutan apa yang menjadi
Main link
danLink 7
, sementara footer menjadiMain Link
. Selanjutnya#
harus diganti secara manual, karena program seperti apa adanya.sumber
CJam,
454442403635 byteMenjalankan berbagai cuplikan kode berdasarkan panjang input.
sumber
<s></s>
PHP 7.1, 88 byte
PHP 5,
9088 bytesumber
_21422112233122444113355123456[6*$i+++strlen($argn|aa)-8]
?$argn
dalam21422112233122444113355123456
dan memilih yang benar berdasarkan strlen.aa
bantalan string setidaknya 2 karakter. Pada input#
tidak ada output$argn[1]
jadi?:0
a0
. Ini juga berfungsi untuk di0
dalam string. Salah satu jawaban terbaik yang pernah saya lihat! Sayangnya itu tidak membayar terlalu banyak (mendapat jawaban Jorg turun ke 95).PHP,
95938987Pada dasarnya jawaban JörgHülsermann tetapi sangat turun jadi saya memutuskan untuk mempostingnya sebagai jawaban terpisah. Saya akan menghitung jawaban ini sebagai upaya kolektif saya dan Jorg.
sumber
Python 3,
166162160152 byteSaya membuat daftar tuple penggantian regex untuk setiap pola, dan kemudian mengekstrak tuple pada indeks
len(x)-1
, akhirnya menepuk (*
) ke dalam argumenre.sub
:disimpan 8 byte dengan menghafal
r'\1'
(terima kasih, Gábor Fekete)sumber
r'\1'
sebagai parameter bernama menyimpan beberapa byte?o=r'\1'
tetapi menggunakanb
dalam kode Anda: DJava 10,
228227224182 byteCobalah online.
Penjelasan:
sumber
APL (Dyalog) , 43 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem.Cobalah online!
1↓⍞
drop karakter pertama (hash){
terapkan fungsi anonim berikut(≢⍵)⊃
gunakan panjang argumen untuk memilih salah satu dari tujuh nilai berikut:'0'
nol⍵
argumen⍵
argumen2/⍵
dua (2
) dari masing-masing (/
) dari argumen (⍵
) argumen∊⍵,¨⊃⌽⍵
diratakan (∊
) (⍵
) diikuti masing-masing (,¨
) dengan yang pertama (⊃
) dari terbalik (yang⌽
) argumen (⍵
)⍵,⌽⍵
argumen (⍵
) prepended (,
) ke (terbalik⌽
) argumen (⍵
)⍵
argumen6⍴
ulangi elemen dari itu sampai panjang enam tercapai}
akhir fungsi anonim'#',
tambahkan hash ke sanasumber
Python 2,
167165 byte-2 byte berkat Trelzevir
Itu membuat daftar string dan memilih berdasarkan panjang string.
sumber
z=zip
.Sed, 119 (118 Bytes +
-E
)Substitusi teks langsung.
sumber
PHP, 87 Bytes
gunakan Nomor Basis 35
Cobalah online!
atau gunakan Nomor Basis 33
Cobalah online!
PHP, 89 Bytes
Cobalah online!
intval(["8kn",gd8,"9ft",wqq,i3j,i3k][strlen($argn|aa)-2],36)
+ 3 Bytes menggunakan 36 BasePHP, 102 Bytes
Cobalah online!
PHP, 180 Bytes
Cobalah online!
sumber
Retina , 90 byte
Cobalah online! Termasuk kasus uji.
Penjelasan: Terjemahan pertama menangani dua digit, yang ketiga tiga, yang ketiga empat, dan yang keempat nol. Namun, terjemahan kedua dan keempat tidak mengulangi digit (terakhir), seperti yang dilakukan pada akhirnya untuk mencakup semua kasus yang tersisa.
sumber
Haskell ,
13012712211810995 bytes (oleh user1472751 )Cobalah online!
sumber
g
.(x:r)!(y:t)=x:y:r!t;e!_=e
lebih pendek daria!b=id=<<[[x,y]|(x,y)<-zip a b]
.#
bisa kamu lakukang(a:t)|l<-last t=a:[ ...
Powershell,
113111 byteScript pengujian yang dijelaskan:
Keluaran:
sumber
JavaScript (ES6), 96 byte
Tampilkan cuplikan kode
sumber
Perl, 61 byte
Jalankan dengan
perl -nE
. Mengasumsikan bahwa input persis seperti yang dijelaskan (memberikan hasil yang salah jika input memiliki baris tambahan).String "g + g + ÜRÉ / Â ¥ [[" mengkodekan 7 angka 16-bit
11111,11111,21212,12233,42434,23455,23456
sebagai 14 karakter latin1. Berikut hexdump untuk kejelasan:sumber
perl -nE 'say+(/./g,0)[0,1,(unpack+S7,pack "H*","672b672bdc52c92fc2a59f5ba05b")[y/#//c]=~/./g]'
. Tetapi ketika saya mengetik "#a", saya mendapatkan "# a0a0a0" yang saya pikir salah. Itu harus "#aaaaaa". (Mungkin saya membuat kesalahan dalam panggilan paket ().)perl -nE 'say+(/./g,0)[0,1,(11111,11111,21212,12233,42434,23455,23456)[y/#//c]=~/./g]'
. Tampaknya masih salah, karena "#a" masih menghasilkan jawaban yang salah dari "# a0a0a0" (bukan "#aaaaaa").-l
switch (yang ini "elo" seperti dalam "huruf L") dengan-nE
switch, seperti ini:perl -lnE 'say+(/./g,0)[0,1,(11111,11111,21212,12233,42434,23455,23456)[y/#//c]=~/./g]'
. Sekarang berfungsi dengan benar.perl -nE
" menjadi "Jalankan denganperl -lnE
". (Bagian-l
dari saklar menghilangkan jalur baru yang tertinggal untuk Anda.)-F
pada baris perintah memungkinkan Anda mengubahnya untuksay+(@F,0)[0,1,(unpack+S7,"g+g+ÜRÉ/Â¥[ [")[$#F]=~/./g]
menyimpan 5 byte dalam kode.Windows batch,
389 372 362 349231 byteSaya benar-benar menyalin kode @Neil ...
sumber
%s:~3,1%%s:~4,1%
dapat diganti dengan%s:~3,2%
. Saya juga tidak yakin apakah ini berfungsi untuk masukan dari#
.call:c %s:~1,1% %s:~2,1% %s:~3,1% %s:~4,1% %s:~5,1% %s:~6,1%
danfor %%r in (#%1%2%3%4%5%6.%6 #%1%2%3%4%5%5.%5 #%1%4%2%4%3%4.%4 %s%%1%2%3.%3 %s%%1%2%1%2.%2 %s%%1%1%1%1%1.%1 #000000.0)do if not %%~xr.==. echo %%~nr&exit/b
.Pyth, 35 byte
Cobalah online di sini , atau verifikasi semua test case di sini .
sumber
Python 2 , 99 byte
Cobalah online!
sumber
Python 2 - 179 byte
Adakah yang bisa membantu saya menyimpan beberapa byte? Semua pernyataan seakan-akan bisa disingkat menjadi sesuatu yang lebih pendek, saya hanya tidak tahu apa.
sumber
list[len(list)-x]
sama denganlist[-x]
.if t==1:
untuk mengonversikan keif t<2:
(danif t==2:
keif t<3:
, dll.). Ini kurang dapat dibaca, tentu saja, tetapi lebih banyak kode-golf!TXR Lisp: 171 byte
Bertakuk:
Ini adalah fungsi anonim:
do
makro menghasilkan(lambda ...)
formulir.Ini adalah gaya pengkodean idiomatik, cocok untuk produksi; satu-satunya golf adalah squashing space:
sumber
Braingolf , 95 byte
Cobalah online!
Ini secara efektif setara dengan huruf Switching pada jumlah karakter setelah
#
input.Penjelasan
Hal-hal yang selalu berjalan:
Jika
#X
:Jika
#XX
Yang ini mungkin sedikit golf, saya mungkin melihatnya ketika saya pulang
Jika
#XXX
Anda mendapatkan idenya
sumber
Ruby , 127 byte
Cobalah online!
sumber
Ruby , 118 byte
Cobalah online!
sumber
05AB1E , 24 byte
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber