Настоящий цвет (24 бита) в Википедии описан в соответствующей части как
24 бита почти всегда используют 8 бит каждого из R, G, B. Начиная с 2018 года, 24-битная глубина цвета используется практически на каждом дисплее компьютера и телефона и в подавляющем большинстве форматов хранения изображений. Почти все случаи, когда на пиксель приходится 32 бита, означают, что 24 используются для цвета, а оставшиеся 8 являются альфа-каналом или не используются.
2 24 дает 16 777 216 цветовых вариаций. Человеческий глаз может различать до десяти миллионов цветов [10], и поскольку гамма дисплея меньше, чем диапазон человеческого зрения, это означает, что он должен охватывать этот диапазон с большей детализацией, чем может быть воспринято. ...
...
Системы Macintosh называют 24-битный цвет «миллионами цветов». Термин «Настоящий цвет» иногда используется для обозначения того, что в этой статье называется «Прямой цвет». [13] Он также часто используется для обозначения всех глубин цвета, больших или равных 24.
Все 16,777,216 цветов
задача
Напишите программу, которая генерирует и возвращает все 16 777 216 цветовых вариаций в массиве в виде строк в rgb()
функции CSS.
5.1. Функции RGB:
rgb()
иrgba()
rgb()
Функция определяет цвет RGB, указав красный, зеленые и синие каналы напрямую. Его синтаксис:rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) <alpha-value> = <number> | <percentage>
Первые три аргумента указывают красный, зеленый и синий каналы цвета соответственно.
0%
представляет минимальное значение для этого цветового канала в гамме sRGB и100%
представляет максимальное значение. A<number>
эквивалентно a<percentage>
, но с другим диапазоном:0
снова представляет минимальное значение для цветового канала, но255
представляет максимум. Эти значения основаны на том факте, что многие графические движки хранят цветовые каналы внутри себя как один байт, который может содержать целые числа от 0 до 255. Реализации должны соблюдать точность канала как созданную или вычисленную, где это возможно. Если это невозможно, канал должен быть округлен до ближайшего значения с максимально возможной точностью, округлен в большую сторону, если два значения одинаково близки.Последний аргумент -
<alpha-value>
указывает альфа цвета. Если задано как<number>
, полезный диапазон значения0
(представляющий полностью прозрачный цвет) -1
(представляющий полностью непрозрачный цвет). Если задано как,0%
представляет полностью прозрачный цвет, а100%
представляет полностью непрозрачный цвет. Если опущено, по умолчанию100%
.Значения вне этих диапазонов не являются недопустимыми, но привязаны к диапазонам, определенным здесь во время вычисления значения.
По устаревшим причинам
rgb()
также поддерживает альтернативный синтаксис, который разделяет все его аргументы запятыми:rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
Также по старым причинам
rgba()
также существует функция с идентичной грамматикой и поведениемrgb()
.
или шестнадцатеричный #RRGGBB
формат записи RGB
5.2. Шестнадцатеричные обозначения RGB:
#RRGGBB
Шестнадцатеричная нотация цвета CSS позволяет задавать цвет, задавая каналы в виде шестнадцатеричных чисел, что аналогично тому, как цвета часто записываются непосредственно в компьютерном коде. Это также короче, чем запись того же цвета в
rgb()
нотации.Синтаксис a
<hex-color>
- это<hash-token>
токен, значение которого состоит из 3, 4, 6 или 8 шестнадцатеричных цифр. Другими словами, шестнадцатеричный цвет записывается как хеш-символ «#», за которым следует некоторое количество цифр 0–9 или букв af (регистр букв не имеет значения -#00ff00
идентичен#00FF00
).Количество заданных шестнадцатеричных цифр определяет, как декодировать шестнадцатеричное представление в цвет RGB:
6 цифр
Первая пара цифр, интерпретируемая как шестнадцатеричное число, указывает красный канал цвета, где
00
представляет минимальное значение, аff
(255 в десятичном виде) представляет максимум. Следующая пара цифр, интерпретируемая таким же образом, обозначает зеленый канал, а последняя пара обозначает синий. Альфа-канал цвета полностью непрозрачен.Пример 2.
Другими словами,#00ff00
представляет тот же цвет, что иrgb(0 255 0)
(зеленый лайм).
См . Черновой вариант цветового модуля CSS для редактора. Уровень 4
Примеры
rgb()
Функция CSS ( вместо запятой можно использовать символ пробела , например, rgb(0 255 0)
)
// `rgb()` `<percentage>` as strings in resulting array
['rgb(0%,0%,0%)', ...,'rgb(0%,255%,0)', ...'rgb(255,255,255)']
// `rgb()` `<number>` as strings in resulting array
['rgb(0,0,0)', ...,'rgb(0,255,0)', ...'rgb(255,255,255)']
CSS RGB шестнадцатеричное обозначение RRGGBB
// RGB hexadecimal notation as strings in resulting array
['#000000', ...,'#00ff00', ...'#ffffff']
Критерии победы
Наименее байты используются для написания программы.
источник
Ответы:
R , 25 байт
Попробуйте онлайн!
источник
a:b-c
делает вектор изa-c
tob-c
включительно (делает вектор изa
tob
, затем вычитаетc
из каждой записи).Python 2 ,
77403937 байтПопробуйте онлайн!
-1 байт благодаря цифровой травме
-2 байта благодаря Дилнану
источник
8**8
вместо того,1<<24
чтобы сохранить байтprint['...
PowerShell ,
2826 байтПопробуйте онлайн!
Петли от
1
до16mb
(16777216). На каждой итерации мы используем-f
оператор ormat, действующий на текущее число, предварительно уменьшенное по--$_
отношению к строке"#{0:x6}"
. Здесь мы указываем егоx
значения, дополненные6
цифрами, с хешем#
впереди. На TIO ограничено 60 секундами / 128 КБ вывода. Измените на,1
чтобы(16mb-5)
увидеть, чем это заканчивается .источник
JavaScript (ES7),
656261 байтСохранено
34 байта благодаря @tshВозвращает массив
#RRGGBB
строк.Попробуйте онлайн! (усеченный вывод)
источник
8**8
вместо1<<24
. Это будет работать на JS тоже.Common Lisp, 42 байта
Попробуйте онлайн!
источник
format
гольф, которого я видел. +1 только на этой основе.Japt, 14 байт
Выходы как
#rrggbb
.Попробуйте (ограничено первыми 4096 элементами)
объяснение
источник
ù
. Другой типичный пример использования этого - использовать его в качестве счетчика, когда вам нужно увеличить переменную, например, при сопоставлении массива. И, конечно, поскольку это переменная, вы можете просто присвоить ей значение, если это необходимо.0
это единственное целое число, состоящее из одной цифры, которое имеет свою собственную переменную, ну, технически, 7 как 6 входная переменная поU-Z
умолчанию0
. Остальные целые числа , присвоенные переменным в Japt являются:-1, 10-16, 32, 64 & 100
.Haskell, 41 байт
Попробуйте онлайн!
источник
05AB1E ,
151410 байтПопробуйте онлайн.
Объяснение:
источник
Пакет, 87 байт
Выходы в формате CSS. Подстановка переменной происходит до
for
синтаксического анализа оператора, поэтому фактический код выглядит следующим образом:источник
C # (интерактивный компилятор Visual C #) , 47 байт
Попробуйте онлайн!
источник
C # (.NET Core) , 75 байт
Попробуйте онлайн!
Порт версии JAVA 10 с форматом интерполированной строки C #
источник
K (ок) , 19 байт
Решение:
Попробуйте онлайн! (ограничено первыми 500 номерами)
Объяснение:
Сбросить строки RGB. Преобразуйте каждое число от 0 до 16777216 в основание 256, затем преобразуйте в строки ...
источник
MATL ,
1715 байтПопробуйте онлайн!
Версия TIO отображает первые 2 ^ 10 только в качестве тайм-аута. Я включил последнюю итерацию в нижний колонтитул, чтобы показать, что она действительно заканчивается в
#FFFFFF
. Сохранение одного байта путем заменыfprintf
вместо ручной сборки строки. Вывод списка через запятую.объяснение
источник
APL (Dyalog Unicode) ,
474320 байтПопробуйте онлайн!
6⍴
4⍴
Спасибо @Dzaima и @ngn за 23 байта.
Использует
⎕IO←0
.Как:
источник
Рубин , 31 байт
Попробуйте онлайн!
источник
%
длинную строку и длинный массив. К вашему сведению, вы можете сохранить байт, используя вместо него буквальный разрыв строки\n
.V , 25 байтов
Попробуйте онлайн! (заменено
16777215
на31
)объяснение
источник
Партия, 69 + 4 = 73
г. см, 69
Сохраняет шестнадцатеричное значение с формой
#RRGGBB
в массив.g.cmd
должен быть вызван с помощьюcmd /V/Q/K g.cmd
. Отсюда +4,/V/Q
считая 4 дополнительных символа по сравнению с простоcmd /K g.cmd
. Это устанавливает среду, которая имеет «Массив» в памяти. Запуск также занимает вечность, поэтому используйте очень низкие значения, чтобы попытаться или прервать выполнение, используяCtrl+C
Сломать
Invokation
/V
включает отложенное расширение, но оно корочеsetlocal EnableDelayedExpansion
, поэтомуcmd
в первую очередь нам нужен вызов/Q
пропускает вывод и эквивалентно@echo off
/K
позволяет выполнить выражение (в данном случаеg.cmd
) и не завершать его впоследствии, поэтому вы можете проверить «Массив», используяset #
g.cmd
Этот бит использует описанный здесь прием для преобразования нормального числа в шестнадцатеричное, а затем сохраняет это значение в массив.
Я назвал эту структуру хранения «Массивом», но на самом деле это неверно, поскольку настоящие массивы не существуют в пакетном режиме. НО вы можете называть переменные так, чтобы они имели имена, похожие на массивы, например:
или, как в этом случае:
Вы все еще можете получить к ним доступ через
!#%position%!
источник
/V/Q/K
может быть заявлен как «аргумент» для переводчика и считается «3 + 69 = 72». МетаGroovy , 53 байта
Определение функции. c () возвращает ArrayList (я полагаю, что это нормально, даже несмотря на вопрос, запрашивающий массив).
Ungolfed, с неявными типами:
Попробуйте онлайн!
источник
Java 10,
8784 байта-3 байта благодаря @ archangel.mjj .
Попробуйте онлайн (ограничено первыми
4,096
предметами).Объяснение:
источник
r[i]="".format("#%06X",i);
"".format("#%06X",i)
раньше, так как я видел это в ответе Python, но я отбросил ответ, потому что я не мог заставить его работать достаточно быстро для TIO. Затем я увидел, что все просто выводят первые4,096
элементы на TIO, поэтому я снова написал ответ, забыв о"#%06X"
...>. <var r
на Java ..var
в Java.PHP,
6862 байтаЭто должно быть помещено в файл, массив возвращается в конце, чтобы быть пригодным для использования.
Чтобы получить доступ к массиву, просто передайте результат включения (например:)
$a = include 'xyz.php';
переменной.Спасибо @manatwork за то, что сэкономил мне 6 байтов и исправил ошибку .
источник
%1$06d
строкой формата? И я не вижу причин для использования1$
. Вы могли бы уменьшить длину, включив «#» в строке формата:#%06x
. Что может пригодиться при добавлении дополнительных символов для фиксирования диапазона, поскольку в настоящее время считается до 16777216 = # 1000000.%d
к%x
. И совсем забыл о перемещении#
внутриsprintf()
звонка. Вы спасли мне 6 байтов. СпасибоMATL , 11 байт
Попробуйте онлайн! (только с шестью шестнадцатеричными цифрами вместо шести)
объяснение
источник
Баш + Йот, 22
Попробуйте онлайн!
источник
Perl 5 , 31 байт
Попробуйте онлайн!
источник
Луа ,
4745 байтПопробуйте онлайн!
источник
s
и сохранить байт.T-SQL,
122117 байтВозвращает таблицу
#RRGGBB
строк из 16 777 216 строк. Разрыв строки предназначен только для удобства чтения:Использует рекурсивный CTE для таблицы чисел от 0 до 2 ^ 24-1, затем использует встроенную
FORMAT
команду (доступную в SQL 2012 или более поздней версии), чтобы превратить его в шестизначную шестнадцатеричную строку . Прикрепите#
к передней части, и мы сделали.Редактировать 1: Удалена
POWER()
функция, номер был короче: Pисточник
Желе , 12 байт
Попробуйте онлайн!
источник
Желе , 8 байт
Попробуйте онлайн! (примечание: использует,
2
а не6
как6
время ожидания на TIO)Передача функций (поскольку полные программы Jelly по умолчанию будут печатать списки строк без разделителей между ними, что затрудняет просмотр границ). Ссылка TIO содержит оболочку для печати списка строк с использованием новых строк для их разделения.
объяснение
источник
PHP , 43 байта
Попробуйте онлайн!
источник
1<<24
->8**8
должен работать здесь, кредиты @DigitalTraumaСкала , 40 байт
Попробуйте онлайн!
источник
Perl 6 , 26 байт
Попробуйте онлайн!
Использует тот же формат, что и все остальные. Тайм-аут на TIO.
Или в формате RGB:
31 байт
Попробуйте онлайн!
источник
rgb(0, 0, 0)
строкуrgb
.