вход
Одинарный шестнадцатеричный цветной код, заглавная буква, без #
. Также может быть 24-разрядным целым числом, если вы предпочитаете.
Выход
Ближайшее название цвета HTML (например red
, или dark-salmon
, как определено как https://www.w3schools.com/colors/colors_names.asp или см. Ниже). Расстояние определяется путем суммирования разницы в красном, зеленом и синем каналах.
Примеры
FF04FE
:magenta
FFFFFF
:white
457CCB
(на полпути междуsteelblue
иdarkslateblue
):steelblue
(округлить вверх )
правила
- Применяются стандартные лазейки.
- Применяется стандартный ввод / вывод
- Округлите до цвета с большей суммой канала, если между двумя цветами на полпути. Если два цвета имеют одинаковую сумму каналов, выведите тот, который выше, чем шестнадцатеричный код: например,
red
=#FF0000
= 16711680>blue
=#0000FF
= 256 - Если один шестнадцатеричный код имеет два имени (например,
grey
иgray
), выведите либо. - Выходные данные могут быть написаны с заглавной буквы и дефисами, как вам нравится
- Завершающие / предшествующие пробелы / переводы строк в порядке
- Вы должны вывести имена полностью.
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Цвета
Согласно предложению в комментариях, здесь приведены все названия цветов с соответствующими шестнадцатеричными значениями в формате 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
. Я только отфильтровал дублированные серые цвета, но не два других. Так что я получал смещенные ошибки из-за несоответствий в моих строках и целочисленных списках ..>.> Я решил опубликовать это здесь, чтобы другие люди не совершили ту же ошибку, что и я.Ответы:
C # (интерактивный компилятор Visual C #) , 231 + 21 = 252 байта
Объяснение:
По какой-то причине Tio жалуется, что пространство имен «Drawing» не существует в пространстве имен «System», несмотря на то, что исходный проект Mono заявляет, что он совместим. Это прекрасно работает в VisualStudio, хотя.
РЕДАКТИРОВАТЬ: очевидно, он еще не был реализован в Tio!
Попробуйте онлайн!
источник
Node.js , 1488 байт
Принимает ввод как 24-битное целое число. Выходы в нижнем регистре.
Попробуйте онлайн!
Как?
Сжатая строка длиной 1683 символа выглядит следующим образом:
Цвета упорядочены от минимального до максимального значения. Каждый цвет кодируется как его имя в нижнем регистре, за которым следует разница между его значением и предыдущим значением в base-36 и в верхнем регистре:
комментарии
источник
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}
(обратите внимание, что этоrgb(36, 39, 41)
меняется с ...Желе ,
1015914 байтПопробуйте онлайн!
Спасибо @Arnauld за предложение, которое сэкономило 41 байт!
Полная программа. Принимает цвет как 24-битное целое в качестве аргумента и возвращает имя цвета.
объяснение
Вспомогательная ссылка
Цветные названия. Хранится с использованием сжатой строки, но с общими словами, замененными одиночными символами ASCII в диапазоне от 33 до 64
Главная ссылка
Этап 1: Начать создание списка цветовых чисел. Приращения между номерами цветов сохраняются в диапазоне от 1 до 3 от 249 цифр. Приращение было умножено на 3, преобразовано в основание 249, а затем число цифр минус 1 было добавлено к младшей значащей цифре, прежде чем изменить порядок цифр.
Этап 2. Завершите генерацию цветовых чисел и найдите ввод
Перед сравнением цвета меняются местами, потому что цвета без красного компонента (например) заканчиваются списком из двух компонентов.
Ссылка TIO генерирует 10 случайных цветов и показывает результат, поэтому каждый раз будет отличаться.
источник
Wolfram Language (Mathematica), 164 байта
Примечание. Это работает только в Mathematica 12.0 из-за ошибки в предыдущих версиях. Это также означает, что ссылка TIO отсутствует.
Определяет функцию
g
, которая принимает целое число в качестве входных данных. Тестовые случаи:К сожалению, довольно много байтов теряется при добавлении «RebeccaPurple» во встроенный список цветов, который по некоторым причинам отсутствует. Все остальное довольно просто, мы просто сортируем цвета по их расстоянию до входа, разрывая связи с суммой значений каналов и затем абсолютным порядком.
источник
RebeccaPurple
новый (ish) и дань уважения дочери Эрика Мейера: lists.w3.org/Archives/Public/www-style/2014Jun/0312.html . Я подниму это как улучшение функции с Mathmatica.JavaScript (Firefox), 1050 байт
Показать фрагмент кода
Третий язык JavaScript в этом вопросе сейчас ...
getComputedStyle
всегда возвращает цвета вrgb(x, y, z)
форме, еслиalpha == 1
на Firefox._
переменная содержит строку со всеми именами цветов в формеBlackNavyDarkblueMediumblueBlueDarkgreen...White
.Сэкономьте 11 байт благодаря Кевину Круйссену, удалив ненужные цвета. Сэкономьте ~ 350 байт благодаря Арно, введя странный алгоритм упаковки.
источник
document.body
вb
пределахgetComputedStyle
, что позволит вам удалить заключающие скобки.FuchsiaMagenta
иAquaCyan
оба могут быть одним из двух вместо обоих, так как они (как и всеGray/Grey
) имеют одинаковые цветовые коды.,r
может быть&&r
вместо этого.JavaScript (Node.js) +
color-name
пакет, 259279284259278282299312364байтаПопробуйте онлайн!
комментарии:
Мне пришлось
для require () для работы. Я не думаю, что смогу установить npm на TIO, поэтому я жестко запрограммировал словарь в заголовке.
Этот пакет содержит те же 148 записей, что и страница w3schools, имена строчные. Я понятия не имею, кто и когда его создал, я просто нашел его, пока гуглил. Для него есть пакет Debian , поэтому я предполагаю, что он старше этого вопроса.
[Правка: уменьшение третьего размера / капитальный ремонт]
[Правка 5-е / исправление: эта версия имела 282 байта, но отсутствовала привязка по значению RGB. Я не думаю, что смогу исправить это, а затем поиграть в гольф поменьше, чем этот, поэтому я удалил этот код из поста.]
На этот раз я переписал большую часть кода. Я чувствую, что это так отличается от того, что не имеет смысла сохранять историю в посте.
@Shaggy спас мне 4 байта от последней версии, опуская скобки вокруг параметров функции одной стрелки. Теперь их 6, поэтому я должен поблагодарить 12 байт.
Я перешел от создания диктов / списков вручную к использованию
map
иfilter
везде, что позволило / вызвало большую реструктуризацию. Я также нашел еще несколько ситуаций, когда я мог назначить переменные позже.[Править: 4-е сокращение, вернуться к корням]
В течение минуты после отклонения истории (выше) я понял свою ошибку, говоря это.
Я применил полученные уроки к старому коду и увидел, что второй вид sort () не имеет смысла. Так что сейчас этот код впереди на 4 байта.
[Редактировать: 4.1-го: DUH! все виды были бессмысленными. Еще 19 байт]
[Редактировать: 5-я итерация, растет, но теперь (надеюсь) исправить]
@Lukas Lang указал, что мой код был неправильным в тех случаях, когда сумма канала была привязана. У меня сложилось неправильное впечатление, что этого никогда не происходит.
Чтобы это исправить, мне нужно было заполнить массивы
S
парами [RGBarray, name], а не просто именами. Таким образом, сортировка массива по умолчанию завершает работу.[Править: 6-е сокращение - подарок из высшего царства]
@Shaggy получает всю награду за этот раунд.
.reverse()[0]
есть.pop()
. Очевидно ... Кроме того, неявное преобразование типов делает('0x'+c)
работу вместоparseInt(c,16)
. И если вы правильно поняли паратезы, КАЖДУЮ переменную можно назначить при первом использовании. На этот раз, это былоW
иp
.источник
e8fcf8
: и то,Azure
и другоеMintCream
имеют расстояние18
до этого цвета, и сумма канала750
. Таким образом, результат должен бытьMintCream
, пока этот код возвращаетсяAzure
.05AB1E , 1175 байт
Это заняло довольно много времени .. 139 цветов, чтобы создать строку ..>.>
Принимает ввод в виде 24-разрядных целых чисел для сохранения 1 байта.
Попробуйте онлайн или проверьте еще несколько тестов . (Оба они слегка изменены, чтобы вместо них принимать шестнадцатеричные строки, так как это проще для тестирования.)
Объяснение:
Сначала мы генерируем все строки цветов:
Затем мы генерируем список прямых различий (дельт) между каждым целочисленным значением цветов:
Затем мы определяем индекс значения, ближайшего к входу (в терминах абсолютных различий между каждым цветом RGB - и здесь я подумал, что могу использовать встроенный
.x
.. ), определяем индекс этого ближайшего целого числа в списке и используем его для индекс в строки цвета, которые мы создали ранее:Посмотрите эту подсказку 05AB1E (все четыре раздела), чтобы понять, почему:
.•ŒRǝ...Ð:8•
является"chiffon lavenderblush papayawhip ... cyan turquoise steelblue"
“ƒÏª©–°0‡—...‡Ž0ŠÛ؉„¸“
является"black navy dark0 blue ... light0 yellow ivory white"
•zÑÄ...C±;•
является199...791
•O褕
является1579378
•zÑÄ...C±;••O褕в
является[128,11,66,...,224,16,15]
источник