Wejście
Pojedynczy sześciokątny 6-cyfrowy kod koloru, wielka litera, bez #
. Może być również 24-bitową liczbą całkowitą, jeśli wolisz.
Wynik
Najbliższa nazwa koloru HTML (np. red
Lub dark-salmon
, jak zdefiniowano jako https://www.w3schools.com/colors/colors_names.asp lub patrz poniżej). Odległość określa się, sumując różnicę w kanałach czerwonym, zielonym i niebieskim.
Przykłady
FF04FE
:magenta
FFFFFF
:white
457CCB
(w połowie międzysteelblue
idarkslateblue
):steelblue
(zaokrąglić w górę )
Zasady
- Obowiązują standardowe luki.
- Obowiązują standardowe wejścia / wyjścia
- Zaokrąglić w górę do koloru z wyższą sumą kanałów, jeśli jest w połowie odległości między dwoma kolorami. Jeśli dwa kolory mają tę samą sumę kanałów, wyślij ten, który jest wyższy jako kod szesnastkowy: np.
red
=#FF0000
= 16711680>blue
=#0000FF
= 256 - Jeśli jeden kod szesnastkowy ma dwie nazwy (np.
grey
Igray
), wypisz albo. - Dane wyjściowe mogą być pisane wielkimi literami i dzielone według własnego uznania
- Końcowe / poprzedzające spacje / znaki nowej linii są w porządku
- Musisz podać nazwy w całości.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Zabarwienie
Zgodnie z sugestią w komentarzach, oto wszystkie nazwy kolorów z odpowiednimi wartościami szesnastkowymi w formacie 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
. Odfiltrowałem tylko zduplikowane szare kolory, ale nie pozostałe dwa. Tak więc otrzymywałem błędy związane z niedopasowaniem na moich listach ciągów i liczb całkowitych ..>.> Pomyślałem, że opublikuję to tutaj, aby zapobiec popełnianiu tego samego błędu przez innych.Odpowiedzi:
C # (interaktywny kompilator Visual C #) , 231 + 21 = 252 bajtów
Wyjaśnienie:
Z jakiegoś powodu Tio skarży się, że przestrzeń nazw „Rysunek” nie istnieje w przestrzeni nazw „System”, pomimo źródłowego projektu Mono , który stwierdził, że jest kompatybilny. Jednak działa dobrze w VisualStudio.
EDYCJA: najwyraźniej nie została jeszcze zaimplementowana w Tio!
Wypróbuj online!
źródło
Node.js , 1488 bajtów
Pobiera dane wejściowe jako 24-bitową liczbę całkowitą. Wyjścia pisane małymi literami.
Wypróbuj online!
W jaki sposób?
Skompresowany ciąg ma długość 1683 znaków i wygląda następująco:
Kolory są uporządkowane od najniższej do najwyższej wartości. Każdy kolor jest kodowany jako jego nazwa małymi literami, a następnie różnica między jego wartością a poprzednią wartością w bazie 36 i wielkimi literami:
Skomentował
źródło
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}
(zauważ, żergb(36, 39, 41)
zmienia się wraz z ...Galaretka ,
1015914 bajtówWypróbuj online!
Dzięki @Arnauld za sugestię, która pozwoliła zaoszczędzić 41 bajtów!
Pełny program Bierze kolor jako 24-bitową liczbę całkowitą jako argument i zwraca nazwę koloru.
Wyjaśnienie
Link pomocnika
Nazwy kolorów. Przechowywane przy użyciu skompresowanego łańcucha, ale ze zwykłymi słowami zastąpionymi pojedynczymi znakami ASCII w zakresie od 33 do 64
Główny link
Etap 1: Rozpocznij generowanie listy numerów kolorów. Przyrosty między liczbami kolorów są przechowywane jako od 1 do 3 podstawowych 249 cyfr. Przyrost został pomnożony przez 3, przeliczony na podstawową 249, a następnie liczba cyfr minus 1 została dodana do najmniej znaczącej cyfry, przed odwróceniem kolejności cyfr.
Etap 2: Zakończ generowanie liczb kolorów i sprawdź dane wejściowe
Kolory są odwracane przed porównaniem, ponieważ kolory bez czerwonego składnika (na przykład) staną się listą 2 składników.
Łącze TIO generuje 10 losowych kolorów i pokazuje wynik, więc będzie za każdym razem inny.
źródło
Wolfram Language (Mathematica), 164 bajty
Uwaga: Działa to tylko w Mathematica 12.0 z powodu błędu w poprzednich wersjach. Oznacza to również, że nie ma łącza TIO.
Definiuje funkcję
g
, która przyjmuje na wejściu liczbę całkowitą. Przypadki testowe:Niestety marnuje się sporo bajtów po dodaniu „RebeccaPurple” do wbudowanej listy kolorów, której z jakiegoś powodu brakuje. Reszta jest dość prosta, po prostu sortujemy kolory według odległości do wejścia, zrywając powiązania z sumą wartości kanału, a następnie bezwzględnie sortując.
źródło
RebeccaPurple
jest nowy (ish) i hołd dla córki Erica Meyera: lists.w3.org/Archives/Public/www-style/2014Jun/0312.html . Podniosę to jako ulepszenie funkcji w Mathmatica.JavaScript (Firefox), 1050 bajtów
Pokaż fragment kodu
Trzeci język JavaScript w tym pytaniu teraz ...
getComputedStyle
zawsze zwraca kolory wrgb(x, y, z)
formie, jeślialpha == 1
w przeglądarce Firefox._
zmienna przechowuje ciąg ze wszystkimi nazwami kolorów w formularzuBlackNavyDarkblueMediumblueBlueDarkgreen...White
.Zaoszczędź 11 bajtów dzięki Kevinowi Cruijssenowi, usuwając niepotrzebne kolory. Zaoszczędź ~ 350 bajtów dzięki Arnauldowi, wprowadzając dziwny algorytm pakowania.
źródło
document.body
dob
wewnątrzgetComputedStyle
, umożliwiając usunięcie otaczających nawiasów.FuchsiaMagenta
iAquaCyan
oba mogą być jednym z dwóch zamiast obu, ponieważ są (podobnie jakGray/Grey
) tymi samymi kodami kolorów.,r
być może&&r
zamiast tego.JavaScript (Node.js) +
color-name
pakiet, 259279284259278282299312364bajtówWypróbuj online!
Skomentowano:
musiałem
aby wymagany () działał. Nie sądzę, żebym mógł npm zainstalować na TIO, więc na stałe zapisałem słownik w nagłówku.
Ten pakiet zawiera te same 148 wpisów, co strona w3schools, nazwy pisane są małymi literami. Nie mam pojęcia, kto go stworzył i kiedy go znalazłem, google. Jest do tego pakiet Debiana , więc zakładam, że jest starszy niż to pytanie.
[Edycja: redukcja trzeciego rozmiaru / poważny remont]
[Edycja 5 / korekta: ta wersja miała 282 bajty, ale brakowało podziału według wartości RGB. Nie sądzę, żebym mógł to naprawić, a potem golfa mniejszy niż ten, więc usunąłem ten kod z postu.]
Tym razem przepisałem większość kodu. Wydaje mi się, że jest tak różny od poprzedniego, że nie ma sensu przechowywać historii w poście.
@Shaggy oszczędził mi 4 bajty od ostatniej wersji, pomijając nawiasy wokół parametrów funkcji pojedynczej strzałki. Teraz jest ich 6, więc w zasadzie jestem winien 12 bajtów podziękowań.
Przestawiłem się z ręcznego konstruowania nagrań / list na używanie
map
ifilter
wszędzie, co umożliwiło / spowodowało wiele restrukturyzacji. Znalazłem też kilka sytuacji, w których mogłem później przypisać zmienne.[Edycja: 4. kurczenie się, powrót do korzeni]
W ciągu minuty od odrzucenia historii (powyżej) zdałem sobie sprawę z mojego błędu w mówieniu tego.
Zastosowałem zdobyte dotychczas lekcje do starego kodu i zobaczyłem, że drugi sort () był bezcelowy. Więc teraz ten kod ma 4 bajty.
[Edycja: 4.1th: DUH! wszystkie rodzaje były bezcelowe. -19 dodatkowych bajtów]
[Edytuj: 5. iteracja, rośnie, ale teraz (mam nadzieję) poprawna]
@Lukas Lang zwrócił uwagę, że mój kod był niepoprawny w przypadkach, w których suma kanałów była powiązana. Miałem złe wrażenie, że to się nigdy nie zdarza.
Aby to naprawić, musiałem wypełnić tablice
S
parami [RGBarray, name] zamiast tylko nazw. W ten sposób domyślne sortowanie tablic kończy zadanie.[Edycja: 6 redukcja - prezent z wyższego królestwa]
@Shaggy otrzymuje całą nagrodę za tę rundę.
.reverse()[0]
jest.pop()
. Oczywiście ... Również niejawna konwersja typów sprawia, że('0x'+c)
działa zamiastparseInt(c,16)
. A jeśli poprawnie ułożysz nawiasy, KAŻDĄ zmienną można przypisać przy pierwszym użyciu. Tym razem to byłoW
ip
.źródło
e8fcf8
: obaAzure
iMintCream
mają odległość18
do tego koloru oraz sumę kanałów750
. Tak więc wynik powinien byćMintCream
, podczas gdy ten kod zwracaAzure
.05AB1E , 1175 bajtów
Zajęło to sporo czasu .. 139 kolorów, aby utworzyć ciąg ..>.>
Pobiera dane wejściowe jako liczby całkowite 24-bitowe, aby zapisać 1 bajt.
Wypróbuj online lub sprawdź kilka innych przypadków testowych . (Oba są nieco zmodyfikowane, aby zamiast tego przyjmowały ciągi szesnastkowe jako dane wejściowe, ponieważ łatwiej jest je przetestować).
Wyjaśnienie:
Najpierw generujemy wszystkie ciągi kolorów:
Następnie generujemy listę różnic w przód (delta) między każdą liczbą całkowitą kolorów:
Następnie określamy indeks wartości najbliższej wejściu (pod względem bezwzględnych różnic między każdym kolorem RGB - i tutaj myślałem, że mogę użyć wbudowanego
.x
.. ), określamy indeks najbliższej liczby całkowitej na liście i używamy tego do indeksuj do utworzonych wcześniej ciągów kolorów:Zobacz moją wskazówkę 05AB1E (wszystkie cztery sekcje), aby zrozumieć, dlaczego:
.•ŒRǝ...Ð:8•
jest"chiffon lavenderblush papayawhip ... cyan turquoise steelblue"
“ƒÏª©–°0‡—...‡Ž0ŠÛ؉„¸“
jest"black navy dark0 blue ... light0 yellow ivory white"
•zÑÄ...C±;•
jest199...791
•O褕
jest1579378
•zÑÄ...C±;••O褕в
jest[128,11,66,...,224,16,15]
źródło