Xterm-kompatible Terminals mit 256 Farben bieten 240 Farben zusätzlich zu den üblichen 16 Systemfarben. In den Farben 16-231 werden 6 Stufen (0, 95, 135, 175, 215, 255) von Rot, Grün und Blau verwendet, die lexikographisch geordnet sind. Bei den Farben 232-255 handelt es sich einfach um 24 Graustufen (8 ... 238 x 10s). Um eine bessere Vorstellung davon zu bekommen, wovon ich spreche, sehen Sie sich diese Tabelle an .
Die Herausforderung
Ihr Ziel ist es, ein Programm oder eine Funktion zu erstellen, die als Eingabe RGB-Werte verwendet und die Zahl ausgibt, die der diesem RGB-Wert am nächsten liegenden XTerm-Farbe entspricht. Da die 16 Systemfarben (Farben 0-15) häufig anpassbar sind, schließen Sie sie von dieser Konvertierung aus.
Verwenden Sie den Manhattan-Abstand entlang der roten, grünen und blauen Komponenten, um die "nächstgelegene" Farbe besser zu definieren . Zum Beispiel rgb(10, 180, 90)
ist 20 Einheiten von rgb(0, 175, 95)
(Farbe 35) entfernt, weil abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
. Wenn die Eingabefarbe zwischen zwei oder mehr Xterm-Farben gleich ist, geben Sie die Xterm-Farbe mit dem höchsten Index aus.
Beispiele
R G B Xterm
0 0 0 ==> 16
95 135 0 ==> 64
255 255 255 ==> 231
238 238 238 ==> 255
90 133 140 ==> 66
218 215 216 ==> 188
175 177 178 ==> 249
175 0 155 ==> 127
75 75 75 ==> 239
23 23 23 ==> 234
115 155 235 ==> 111
Regeln
- Standardlücken sind verboten
- Ihr Programm oder Ihre Funktion darf RGB-Werte in jedem vernünftigen Format annehmen, einschließlich:
- Separate Argumente für Rot, Grün und Blau
- Eine Liste, ein Tupel, ein Wörterbuch oder Ähnliches
- Durch Trennzeichen getrennte Zeichenfolge oder stdin
- Hex Farben (zB
#ff8000
)
- Sie können davon ausgehen, dass alle Werte für r, g und b ganze Zahlen zwischen 0 und 255 sind.
- Da die 16 Systemfarben von der Abbildung ausgeschlossen werden sollen, sollten alle Ausgänge im Bereich 16 ... 255 liegen.
Das ist Code-Golf , also gewinnt der kürzeste Code.
Kotlin ,
299290267265 BytesVerschönert
Prüfung
TIO
TryItOnline
quelle
Batch, 266 Bytes
quelle
Stax , 41 Bytes
Online ausführen und debuggen!
ASCII-Version von 50 Bytes:
quelle
C (gcc),
202 192 157 150 (141 abgehört) 138134 BytesVielen Dank @ceilingcat
Probieren Sie es online!
quelle