256-цветные Xterm-совместимые терминалы добавляют 240 цветов поверх обычных 16 системных цветов. Цвета 16-231 используют 6 уровней (0, 95, 135, 175, 215, 255) красного, зеленого и синего, упорядоченные лексикографически. Цвета 232-255 - это просто 24 уровня серого (8 ... 238 на 10 с). Чтобы лучше понять, о чем я говорю, посмотрите эту таблицу .
Соревнование
Ваша цель - создать программу или функцию, которая принимает в качестве входных данных значения rgb и выводит число, соответствующее ближайшему цвету Xterm, этому значению rgb. Поскольку 16 системных цветов (цвета 0-15) часто настраиваются, вы исключите их из этого преобразования.
Чтобы лучше определить, что является «самым близким» цветом, используйте расстояние Манхэттена вдоль красного, зеленого и синего компонентов. Например, rgb(10, 180, 90)
это 20 единиц от rgb(0, 175, 95)
(цвет 35), потому что abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
. Если входной цвет одинаков между двумя или более цветами Xterm, выведите цвет Xterm с наибольшим индексом.
Примеры
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
правила
- Стандартные лазейки запрещены
- Ваша программа или функция может принимать значения rgb в любом приемлемом формате, включая:
- Отдельные аргументы для красного, зеленого и синего
- Список, кортеж, словарь или подобное
- Разделенная разделителем строка или стандартный ввод
- Шестнадцатеричные цвета (например
#ff8000
)
- Вы можете предположить, что все значения r, g и b, будут целыми числами от 0 до 255.
- Поскольку 16 системных цветов должны быть исключены из отображения, все выходы должны быть в диапазоне 16 ... 255.
Это код-гольф , поэтому выигрывает самый короткий код.
Котлин ,
299290267265 байтукрашенный
Тестовое задание
TIO
TryItOnline
источник
Пакетный, 266 байт
источник
Stax , 41 байт
Запускать и отлаживать онлайн!
ASCII версия 50 байтов:
источник
C (gcc),
202 192 157 150 (141 прослушивается) 138134 байтаСпасибо @ceilingcat
Попробуйте онлайн!
источник