Memasukkan
Kode warna hex 6 digit tunggal, huruf kapital, tanpa #
. Bisa juga bilangan bulat 24-bit jika Anda mau.
Keluaran
Yang paling dekat HTML warna nama (misalnya red
, atau dark-salmon
, seperti yang didefinisikan sebagai https://www.w3schools.com/colors/colors_names.asp atau lihat di bawah). Jarak didefinisikan dengan menjumlahkan perbedaan dalam saluran merah, hijau dan biru.
Contohnya
FF04FE
:magenta
FFFFFF
:white
457CCB
(pertengahan antarasteelblue
dandarkslateblue
):steelblue
(round up )
Aturan
- Celah standar berlaku.
- I / O standar berlaku
- Membulatkan ke warna dengan jumlah saluran yang lebih tinggi jika setengah antara dua warna. Jika dua warna memiliki jumlah saluran yang sama, keluarkan satu yang lebih tinggi sebagai kode hex: mis
red
=#FF0000
= 16711680>blue
=#0000FF
= 256 - Jika satu kode heks memiliki dua nama (misalnya
grey
dangray
), keluaran baik. - Output dapat dikapitalisasi dan ditulis dgn tanda penghubung sesukamu
- Trailing / spasi sebelumnya / baris baru baik-baik saja
- Anda harus menampilkan nama secara lengkap.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Warna
Sesuai saran dalam komentar, berikut adalah semua nama warna dengan nilai hex masing-masing dalam format CSV:
Color Name,HEX
Black,#000000
Navy,#000080
DarkBlue,#00008B
MediumBlue,#0000CD
Blue,#0000FF
DarkGreen,#006400
Green,#008000
Teal,#008080
DarkCyan,#008B8B
DeepSkyBlue,#00BFFF
DarkTurquoise,#00CED1
MediumSpringGreen,#00FA9A
Lime,#00FF00
SpringGreen,#00FF7F
Aqua,#00FFFF
Cyan,#00FFFF
MidnightBlue,#191970
DodgerBlue,#1E90FF
LightSeaGreen,#20B2AA
ForestGreen,#228B22
SeaGreen,#2E8B57
DarkSlateGray,#2F4F4F
DarkSlateGrey,#2F4F4F
LimeGreen,#32CD32
MediumSeaGreen,#3CB371
Turquoise,#40E0D0
RoyalBlue,#4169E1
SteelBlue,#4682B4
DarkSlateBlue,#483D8B
MediumTurquoise,#48D1CC
Indigo,#4B0082
DarkOliveGreen,#556B2F
CadetBlue,#5F9EA0
CornflowerBlue,#6495ED
RebeccaPurple,#663399
MediumAquaMarine,#66CDAA
DimGray,#696969
DimGrey,#696969
SlateBlue,#6A5ACD
OliveDrab,#6B8E23
SlateGray,#708090
SlateGrey,#708090
LightSlateGray,#778899
LightSlateGrey,#778899
MediumSlateBlue,#7B68EE
LawnGreen,#7CFC00
Chartreuse,#7FFF00
Aquamarine,#7FFFD4
Maroon,#800000
Purple,#800080
Olive,#808000
Gray,#808080
Grey,#808080
SkyBlue,#87CEEB
LightSkyBlue,#87CEFA
BlueViolet,#8A2BE2
DarkRed,#8B0000
DarkMagenta,#8B008B
SaddleBrown,#8B4513
DarkSeaGreen,#8FBC8F
LightGreen,#90EE90
MediumPurple,#9370DB
DarkViolet,#9400D3
PaleGreen,#98FB98
DarkOrchid,#9932CC
YellowGreen,#9ACD32
Sienna,#A0522D
Brown,#A52A2A
DarkGray,#A9A9A9
DarkGrey,#A9A9A9
LightBlue,#ADD8E6
GreenYellow,#ADFF2F
PaleTurquoise,#AFEEEE
LightSteelBlue,#B0C4DE
PowderBlue,#B0E0E6
FireBrick,#B22222
DarkGoldenRod,#B8860B
MediumOrchid,#BA55D3
RosyBrown,#BC8F8F
DarkKhaki,#BDB76B
Silver,#C0C0C0
MediumVioletRed,#C71585
IndianRed,#CD5C5C
Peru,#CD853F
Chocolate,#D2691E
Tan,#D2B48C
LightGray,#D3D3D3
LightGrey,#D3D3D3
Thistle,#D8BFD8
Orchid,#DA70D6
GoldenRod,#DAA520
PaleVioletRed,#DB7093
Crimson,#DC143C
Gainsboro,#DCDCDC
Plum,#DDA0DD
BurlyWood,#DEB887
LightCyan,#E0FFFF
Lavender,#E6E6FA
DarkSalmon,#E9967A
Violet,#EE82EE
PaleGoldenRod,#EEE8AA
LightCoral,#F08080
Khaki,#F0E68C
AliceBlue,#F0F8FF
HoneyDew,#F0FFF0
Azure,#F0FFFF
SandyBrown,#F4A460
Wheat,#F5DEB3
Beige,#F5F5DC
WhiteSmoke,#F5F5F5
MintCream,#F5FFFA
GhostWhite,#F8F8FF
Salmon,#FA8072
AntiqueWhite,#FAEBD7
Linen,#FAF0E6
LightGoldenRodYellow,#FAFAD2
OldLace,#FDF5E6
Red,#FF0000
Fuchsia,#FF00FF
Magenta,#FF00FF
DeepPink,#FF1493
OrangeRed,#FF4500
Tomato,#FF6347
HotPink,#FF69B4
Coral,#FF7F50
DarkOrange,#FF8C00
LightSalmon,#FFA07A
Orange,#FFA500
LightPink,#FFB6C1
Pink,#FFC0CB
Gold,#FFD700
PeachPuff,#FFDAB9
NavajoWhite,#FFDEAD
Moccasin,#FFE4B5
Bisque,#FFE4C4
MistyRose,#FFE4E1
BlanchedAlmond,#FFEBCD
PapayaWhip,#FFEFD5
LavenderBlush,#FFF0F5
SeaShell,#FFF5EE
Cornsilk,#FFF8DC
LemonChiffon,#FFFACD
FloralWhite,#FFFAF0
Snow,#FFFAFA
Yellow,#FFFF00
LightYellow,#FFFFE0
Ivory,#FFFFF0
White,#FFFFFF
Aqua/Cyan; DarkSlateGray/DarkSlateGrey; DimGray/DimGrey; SlateGray/SlateGrey; LightSlateGray/LightSlateGrey; Gray/Grey; DarkGray/DarkGrey; LightGray/LightGrey; Fuchsia/Magenta
. Saya hanya memfilter warna abu-abu yang digandakan, tetapi tidak dua lainnya. Jadi saya mendapatkan kesalahan yang tidak diatur karena ketidakcocokan dalam string dan daftar integer saya ..>.> Berpikir saya akan memposting ini di sini untuk mencegah orang lain melakukan kesalahan yang sama seperti yang saya lakukan.Jawaban:
C # (Visual C # Interactive Compiler) , 231 + 21 = 252 byte
Penjelasan:
Untuk beberapa alasan, Tio mengeluh bahwa namespace 'Drawing' tidak ada di namespace 'System', meskipun proyek sumber Mono menyatakan itu kompatibel. Ini berfungsi dengan baik di VisualStudio.
EDIT: ternyata belum diimplementasikan ke Tio!
Cobalah online!
sumber
Node.js , 1488 byte
Mengambil input sebagai bilangan bulat 24-bit. Output dalam huruf kecil.
Cobalah online!
Bagaimana?
String yang dikompresi sepanjang 1683 karakter dan terlihat seperti itu:
Warna dipesan dari nilai terendah ke tertinggi. Setiap warna dikodekan sebagai namanya dalam huruf kecil diikuti oleh perbedaan antara nilainya dan nilai sebelumnya dalam basis-36 dan dalam huruf besar:
Berkomentar
sumber
q=i=>{b=document.createElement
d;b.style.color=i;document.body.appendChild(b);h=getComputedStyle(b).color;y=h.slice(4,-1).split(",").map(e=>e.trim());return h!="rgb(36, 39, 41)"?[y.reduce((a,e)=>a+parseInt(e),0),parseInt(y.map(e=>parseInt(e).toString(16).padStart(2,"0")).join``,16)]:0};a=[];for(i=0,t="0";i<7988090793663851220822006848646;i++,t=i.toString(36)){(!t.match(/\d/g)&&q(t))?a.push([t,...q(t)]):0}
(perhatikan bahwargb(36, 39, 41)
perubahan dengan ...Jelly ,
1015914 byteCobalah online!
Terima kasih kepada @Arnauld untuk saran yang menghemat 41 byte!
Program lengkap. Mengambil warna sebagai integer 24-bit sebagai argumennya dan mengembalikan nama warna.
Penjelasan
Tautan pembantu
Nama warna. Disimpan menggunakan string terkompresi, tetapi dengan kata-kata umum digantikan oleh karakter ASCII tunggal dalam kisaran 33 hingga 64
Tautan utama
Tahap 1: Mulai membuat daftar nomor warna. Selisih antara nomor warna disimpan antara 1 dan 3 angka dasar 249. Kenaikan telah dikalikan dengan 3, dikonversikan ke basis 249 dan kemudian jumlah digit minus 1 telah ditambahkan ke digit paling tidak signifikan, sebelum membalikkan urutan digit.
Tahap 2: Selesai menghasilkan nomor warna dan mencari input
Warna dibalik sebelum membandingkan karena warna tanpa komponen merah (misalnya) akan berakhir sebagai daftar 2 komponen.
TIO link menghasilkan 10 warna acak dan menunjukkan output sehingga akan berbeda setiap kali.
sumber
Bahasa Wolfram (Mathematica), 164 byte
Catatan: Ini hanya berfungsi di Mathematica 12.0 karena bug di versi sebelumnya. Ini juga berarti tidak ada tautan TIO.
Menentukan fungsi
g
, yang mengambil integer sebagai input. Kasus uji:Sayangnya, beberapa byte terbuang untuk menambahkan "RebeccaPurple" ke daftar warna bawaan, yang hilang karena beberapa alasan. Sisanya cukup mudah, kami hanya mengurutkan warna berdasarkan jarak mereka ke input, memutuskan hubungan dengan jumlah nilai saluran dan kemudian urutan absolut.
sumber
RebeccaPurple
adalah baru (ish) dan penghargaan untuk putri Eric Meyer: lists.w3.org/Archives/Public/www-style/2014Jun/0312.html . Saya akan membesarkannya sebagai peningkatan fitur dengan Mathmatica.JavaScript (Firefox), 1050 byte
Tampilkan cuplikan kode
Bahasa JavaScript ketiga dalam pertanyaan ini sekarang ...
getComputedStyle
selalu mengembalikan warna dalamrgb(x, y, z)
bentuk jikaalpha == 1
di Firefox._
variabel memegang string dengan semua nama warna dalam formulirBlackNavyDarkblueMediumblueBlueDarkgreen...White
.Hemat 11 byte berkat Kevin Cruijssen dengan menghapus warna yang tidak perlu. Hemat ~ 350 byte berkat Arnauld dengan memperkenalkan beberapa algoritma pengemasan yang aneh.
sumber
document.body
keb
dalamgetComputedStyle
, memungkinkan Anda untuk menghapus tanda kurung terlampir.FuchsiaMagenta
danAquaCyan
keduanya bisa menjadi salah satu dari keduanya, bukan keduanya, karena keduanya (sama sepertiGray/Grey
) kode warna yang sama.,r
mungkin&&r
saja.JavaScript (Node.js) +
color-name
paket, 259279284259278282299312364byteCobalah online!
Berkomentar:
saya harus
untuk mengharuskan () untuk bekerja. Saya tidak berpikir saya bisa menginstal NPM di TIO, jadi saya hardcode kamus di header.
Paket ini berisi 148 entri yang sama dengan halaman w3schools, nama lebih kecil. Saya tidak tahu siapa yang membuatnya dan kapan, saya baru menemukannya saat googling. Ada paket Debian untuk itu, jadi saya menganggap itu lebih tua dari pertanyaan ini.
[Sunting: pengurangan ukuran ketiga / perbaikan besar]
[Sunting ke-5 / koreksi: versi itu memiliki 282 byte tetapi tidak ada tiebreak oleh nilai RGB. Saya tidak berpikir saya bisa memperbaikinya dan kemudian golf lebih kecil dari yang ini, jadi saya menghapus kode itu dari posting.]
Kali ini, saya menulis ulang sebagian besar kode. Saya merasa bahwa ini sangat berbeda dari sebelumnya, tidak masuk akal untuk menyimpan sejarah di pos.
@Shaggy menyelamatkan saya 4 byte dari versi terakhir dengan menghilangkan tanda kurung di sekitar parameter fungsi panah tunggal. Sekarang, ada 6 di antaranya, jadi pada dasarnya saya berhutang 12 byte terima kasih.
Saya beralih dari membuat dicts / daftar secara manual ke menggunakan
map
dan difilter
mana - mana, yang memungkinkan / mendorong banyak restrukturisasi. Saya juga menemukan beberapa situasi di mana saya dapat menetapkan variabel nanti.[Sunting: menyusut ke-4, kembali ke akar]
Dalam satu menit setelah mengabaikan sejarah (di atas), saya menyadari kesalahan saya dalam mengatakan itu.
Saya menerapkan pelajaran yang dipelajari sejauh ini ke kode lama, dan saya melihat bahwa jenis kedua () tidak ada gunanya. Jadi sekarang, kode itu di depan 4 byte.
[Sunting: 4.1: DUH! segala macam tidak ada gunanya. -19 byte lagi]
[Sunting: iterasi ke-5, berkembang tetapi sekarang (semoga) benar]
@Lukas Lang menunjukkan bahwa kode saya tidak benar dalam kasus di mana jumlah saluran diikat. Saya memiliki kesan yang salah bahwa ini tidak pernah terjadi.
Untuk memperbaikinya, saya perlu mengisi array
S
dengan pasangan [RGBarray, name], bukan hanya nama. Dengan cara ini, pengurutan array default menyelesaikan pekerjaan.[Sunting: reduksi ke-6 - hadiah dari ranah yang lebih tinggi]
@ Shaggy mendapatkan semua pujian untuk ronde ini.
.reverse()[0]
adalah.pop()
. Jelas ... Juga, konversi tipe implisit menjadikannya('0x'+c)
berfungsiparseInt(c,16)
. Dan jika Anda mendapatkan parantheses dengan benar, variabel SETIAP dapat ditugaskan pada penggunaan pertama. Kali ini, ituW
danp
.sumber
e8fcf8
: keduanyaAzure
danMintCream
memiliki jarak18
ke warna itu, dan jumlah saluran750
. Jadi hasilnya seharusnyaMintCream
, sementara kode ini kembaliAzure
.05AB1E , 1175 byte
Butuh waktu cukup lama .. 139 warna untuk membuat string ..>.>
Mengambil input sebagai bilangan bulat 24-bit untuk menghemat 1 byte.
Cobalah secara online atau verifikasi beberapa kasus uji lagi . (Keduanya sedikit dimodifikasi untuk mengambil string Heksadesimal sebagai input, karena lebih mudah untuk diuji.)
Penjelasan:
Pertama kita menghasilkan semua string warna:
Kemudian kami membuat daftar perbedaan maju (delta) antara setiap nilai integer warna:
Kemudian kita menentukan indeks nilai yang paling dekat dengan input (dalam hal perbedaan mutlak antara setiap warna RGB - dan di sini saya pikir saya bisa menggunakan builtin
.x
.. ), menentukan indeks integer terdekat ini dalam daftar, dan menggunakannya untuk indeks ke dalam string warna yang kita buat sebelumnya:Lihat tip tambang 05AB1E ini (keempat bagian) untuk memahami mengapa:
.•ŒRǝ...Ð:8•
adalah"chiffon lavenderblush papayawhip ... cyan turquoise steelblue"
“ƒÏª©–°0‡—...‡Ž0ŠÛ؉„¸“
adalah"black navy dark0 blue ... light0 yellow ivory white"
•zÑÄ...C±;•
adalah199...791
•O褕
adalah1579378
•zÑÄ...C±;••O褕в
adalah[128,11,66,...,224,16,15]
sumber