Eingang
Ein einzelner hexadezimaler 6-stelliger Farbcode, Großbuchstabe, ohne #
. Kann auch eine 24-Bit-Ganzzahl sein, wenn Sie dies bevorzugen.
Ausgabe
Die nächsten HTML - Farbnamen (zB red
, oder dark-salmon
, wie definiert als https://www.w3schools.com/colors/colors_names.asp oder siehe unten). Die Entfernung wird durch Summieren der Differenz zwischen roten, grünen und blauen Kanälen definiert.
Beispiele
FF04FE
::magenta
FFFFFF
::white
457CCB
( Auf halber Strecke zwischensteelblue
unddarkslateblue
):steelblue
(rund up )
Regeln
- Es gelten Standardlücken.
- Es gilt die Standard-E / A.
- Runden Sie auf die Farbe mit der höheren Kanalsumme auf, wenn die Hälfte zwischen zwei Farben liegt. Wenn zwei Farben dieselbe Kanalsumme haben, geben Sie diejenige aus, die als Hex-Code höher ist: zB
red
=#FF0000
= 16711680>blue
=#0000FF
= 256 - Wenn ein Hex-Code zwei Namen hat (z. B.
grey
undgray
), geben Sie entweder aus. - Ausgaben können nach Belieben großgeschrieben und getrennt werden
- Nachgestellte / vorangestellte Leerzeichen / Zeilenumbrüche sind in Ordnung
- Sie müssen die Namen vollständig ausgeben.
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Farben
Gemäß dem Vorschlag in den Kommentaren sind hier alle Farbnamen mit entsprechenden Hex-Werten im CSV-Format aufgeführt:
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
. Ich hatte nur die duplizierten grauen Farben herausgefiltert, aber nicht die beiden anderen. Ich bekam also Versatzfehler aufgrund von Nichtübereinstimmungen in meinen Zeichenfolgen- und Ganzzahllisten.>.> Ich dachte, ich würde dies hier posten, um zu verhindern, dass andere den gleichen Fehler machen, den ich gemacht habe.Antworten:
C # (Visual C # Interactive Compiler) , 231 + 21 = 252 Byte
Erläuterung:
Aus irgendeinem Grund beschwert sich Tio, dass der Namespace 'Drawing' im Namespace 'System' nicht vorhanden ist, obwohl das Quellprojekt Mono angibt, dass er kompatibel ist. In VisualStudio funktioniert es jedoch einwandfrei.
EDIT: anscheinend wurde es noch nicht in Tio implementiert !
Probieren Sie es online aus!
quelle
Node.js , 1488 Bytes
Nimmt die Eingabe als 24-Bit-Ganzzahl auf. Ausgaben in Kleinbuchstaben.
Probieren Sie es online aus!
Wie?
Die komprimierte Zeichenfolge ist 1683 Zeichen lang und sieht folgendermaßen aus:
Die Farben sind vom niedrigsten zum höchsten Wert geordnet. Jede Farbe wird in Kleinbuchstaben als Name codiert, gefolgt von der Differenz zwischen ihrem Wert und dem vorherigen Wert in Basis-36 und in Großbuchstaben:
Kommentiert
quelle
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}
(Beachten Sie, dassrgb(36, 39, 41)
sich dies mit dem ...Gelee ,
1015914 BytesProbieren Sie es online aus!
Vielen Dank an @Arnauld für einen Vorschlag, der 41 Bytes gespart hat!
Volles Programm. Nimmt Farbe als 24-Bit-Ganzzahl als Argument und gibt den Farbnamen zurück.
Erläuterung
Helfer Link
Farbnamen. Wird mit komprimierten Zeichenfolgen gespeichert, wobei jedoch gebräuchliche Wörter durch einzelne ASCII-Zeichen im Bereich von 33 bis 64 ersetzt werden
Hauptlink
Stufe 1: Erstellen Sie eine Liste mit Farbnummern. Die Inkremente zwischen Farbnummern werden als zwischen 1 und 3 Basis-249-Ziffern gespeichert. Das Inkrement wurde mit 3 multipliziert, in die Basis 249 konvertiert, und dann wurde die Anzahl der Ziffern minus 1 zur niedrigstwertigen Ziffer addiert, bevor die Reihenfolge der Ziffern umgekehrt wurde.
Stufe 2: Beenden Sie die Generierung der Farbnummern und schlagen Sie die Eingabe nach
Die Farben werden vor dem Vergleich umgekehrt, da Farben ohne rote Komponente (zum Beispiel) als Liste mit zwei Komponenten angezeigt werden.
Die TIO-Verknüpfung generiert 10 zufällige Farben und zeigt die Ausgabe an, sodass sie jedes Mal anders ist.
quelle
Wolfram Language (Mathematica), 164 Bytes
Hinweis: Dies funktioniert nur in Mathematica 12.0 aufgrund eines Fehlers in früheren Versionen. Dies bedeutet auch, dass keine TIO-Verbindung besteht.
Definiert die Funktion
g
, die eine Ganzzahl als Eingabe verwendet. Testfälle:Leider werden einige Bytes verschwendet, wenn "RebeccaPurple" zur integrierten Liste der Farben hinzugefügt wird, was aus irgendeinem Grund fehlt. Der Rest ist ziemlich einfach, wir sortieren die Farben einfach nach ihrem Abstand zum Eingang und lösen die Verbindung mit der Summe der Kanalwerte und dann der absoluten Reihenfolge.
quelle
RebeccaPurple
ist neu (ish) und eine Hommage an Eric Meyers Tochter: lists.w3.org/Archives/Public/www-style/2014Jun/0312.html . Ich werde es als Funktionserweiterung mit Mathmatica ansprechen.JavaScript (Firefox), 1050 Byte
Code-Snippet anzeigen
Dritte JavaScript-Sprache in dieser Frage jetzt ...
getComputedStyle
Gibt in Firefox immer Farben inrgb(x, y, z)
Form zurückalpha == 1
._
Variable enthält die Zeichenfolge mit allen Farbnamen im FormularBlackNavyDarkblueMediumblueBlueDarkgreen...White
.Sparen Sie dank Kevin Cruijssen 11 Bytes, indem Sie unnötige Farben entfernen. Sparen Sie dank Arnauld ~ 350 Bytes, indem Sie einen seltsamen Packalgorithmus einführen.
quelle
document.body
zub
innerhalbgetComputedStyle
, so dass Sie die umschließenden Klammern entfernen.FuchsiaMagenta
undAquaCyan
können beide einer der beiden sein, anstatt beide, da sie (genau wie dieGray/Grey
) die gleichen Farbcodes haben.,r
vielleicht&&r
stattdessen.JavaScript (Node.js) +
color-name
Paket, 259279284259278282299312364BytesProbieren Sie es online aus!
Kommentiert:
Ich musste
damit das require () funktioniert. Ich glaube nicht, dass ich npm auf TIO installieren kann, also habe ich das Wörterbuch im Header fest codiert.
Dieses Paket enthält die gleichen 148 Einträge wie die Seite w3schools, Namen sind Kleinbuchstaben. Ich habe keine Ahnung, wer es erstellt hat und wann ich es gerade beim googeln gefunden habe. Es gibt ein Debian-Paket dafür, also gehe ich davon aus, dass es älter als diese Frage ist.
[Bearbeiten: Reduzierung der dritten Größe / Generalüberholung]
[Bearbeiten 5. / Korrektur: Diese Version hatte 282 Bytes, aber es fehlte der Tiebreak nach RGB-Wert. Ich glaube nicht, dass ich das beheben und dann kleiner als dieses Golf spielen kann, also habe ich diesen Code aus dem Beitrag entfernt.]
Dieses Mal habe ich den größten Teil des Codes neu geschrieben. Ich habe das Gefühl, dass es so anders ist als früher, dass es keinen Sinn macht, die Geschichte in der Post zu halten.
@Shaggy hat mir 4 Bytes gegenüber der letzten Version gespart, indem Klammern um einzelne Pfeilfunktionsparameter weggelassen wurden. Jetzt gibt es 6 davon, also schulde ich im Grunde 12 Bytes Dank.
Ich wechselte von der manuellen Erstellung von Diktaten / Listen zur Verwendung
map
undfilter
überall, was viele Umstrukturierungen ermöglichte / veranlasste. Ich fand auch einige weitere Situationen, in denen ich später Variablen zuweisen konnte.[Edit: 4. Schrumpfen, zurück zu den Wurzeln]
Innerhalb einer Minute, nachdem ich die Geschichte (oben) verworfen hatte, erkannte ich meinen Fehler, das zu sagen.
Ich habe die bisher gewonnenen Erkenntnisse auf den alten Code angewendet und festgestellt, dass die zweite Sortierung () sinnlos ist. Im Moment ist dieser Code also um 4 Bytes voraus.
[Edit: 4.1.: DUH! Alle möglichen waren sinnlos. -19 weitere Bytes]
[Edit: 5. Iteration, wächst aber jetzt (hoffentlich) richtig]
@ Lukas Lang wies darauf hin, dass mein Code in Fällen, in denen die Kanalsumme gebunden war, nicht korrekt war. Ich hatte den falschen Eindruck, dass dies niemals auftritt.
Um dies zu beheben, musste ich die Arrays
S
mit [RGBarray, Name] -Paaren anstelle von nur Namen füllen . Auf diese Weise wird der Job durch die Standard-Array-Sortierung abgeschlossen.[Edit: 6. Reduktion - Geschenk aus einem höheren Bereich]
@Shaggy bekommt alle Ehre für diese Runde.
.reverse()[0]
ist.pop()
. Offensichtlich ... Auch die implizite Typkonvertierung macht('0x'+c)
Arbeit stattparseInt(c,16)
. Und wenn Sie die Klammern richtig stellen, kann JEDE Variable bei der ersten Verwendung zugewiesen werden. Diesmal war dasW
undp
.quelle
e8fcf8
.: BeideAzure
undMintCream
haben einen Abstand18
zu dieser Farbe und eine Kanalsumme von750
. Daher sollte das Ergebnis seinMintCream
, während dieser Code zurückgibtAzure
.05AB1E , 1175 Bytes
Das hat eine ganze Weile gedauert. 139 Farben, um eine Folge von ..>.> Zu erstellen
Nimmt die Eingabe als 24-Bit-Ganzzahl auf, um 1 Byte zu speichern.
Probieren Sie es online aus oder überprüfen Sie einige weitere Testfälle . (Beide sind leicht modifiziert, um stattdessen hexadezimale Zeichenfolgen als Eingabe zu verwenden, da das Testen einfacher ist.)
Erläuterung:
Zuerst generieren wir alle Farbketten:
Dann erzeugen wir eine Liste von Vorwärtsdifferenzen (Deltas) zwischen jedem ganzzahligen Wert der Farben:
Dann bestimmen wir den Index des Werts, der der Eingabe am nächsten liegt (in Bezug auf die absoluten Unterschiede zwischen den einzelnen RGB-Farben - und hier dachte ich, ich könnte eingebaute
.x
.. verwenden ), bestimmen den Index dieser nächsten Ganzzahl in der Liste und verwenden diesen, um Index in die zuvor erstellten Farbketten:Lesen Sie diesen 05AB1E-Tipp von mir (alle vier Abschnitte), um zu verstehen, warum:
.•ŒRǝ...Ð:8•
ist"chiffon lavenderblush papayawhip ... cyan turquoise steelblue"
“ƒÏª©–°0‡—...‡Ž0ŠÛ؉„¸“
ist"black navy dark0 blue ... light0 yellow ivory white"
•zÑÄ...C±;•
ist199...791
•O褕
ist1579378
•zÑÄ...C±;••O褕в
ist[128,11,66,...,224,16,15]
quelle