Мир искусства полон цвета, но мир сети полнее, чем мир искусства разных цветов и его визуализации. Вот почему нам нужно знать, как преобразовать один тип цветового формата в другой.
Задача самоочевидна:
Напишите программу / функцию, которая преобразует данный код HEX ( #00ff0080
например) в RGBA (например rgba(0, 255, 0, 0.5)
).
Правила:
- Внешние библиотеки / встроенные модули для преобразования HEX в RGBA запрещены. Тем не менее, jQuery и синтаксические заменители, как это приемлемо.
- Применяются стандартные правила ввода / вывода.
- Формат альфа может быть между (1 == 100%) или другим (100 == 100%), что не очень важно.
- Вывод является гибким , если он возвращает 4 преобразованных значения (как String, Array, List, ваш выбор).
- Вы можете принять вход без
#
начала. Таким образом, вы можете взять вход или как#RRGGBBAA
илиRRGGBBAA
. Вы можете предположить, что шестнадцатеричный код (исключая#
) всегда будет иметь длину 8 символов. - Вы должны разделить все значения на 255, включая альфа. Минимальная десятичная точность (для альфы будет 2 десятичных знака).
Тестовые случаи
Input: 00ff0080
Output: 0, 255, 0, 0.5
счет
code-golf , выигрывает код с наименьшим количеством байтов.
#
, в этом случае это будет просто 32-разрядное целое число. Законно ли это так воспринимать?Ответы:
JavaScript (ES6),
735450 байт(Сохранено несколько байтов благодаря @LeakyNun, отредактированному вызову и @CraigAyre.)
источник
eval
вместоparseInt
:s=>s.match(/../g).map((x,i)=>eval('0x'+x)/(i-3?1:255))
eval
отличная альтернативаparseInt
для игры в гольф, спасибо!/../g
. Вы могли бы уменьшить его еще больше, используяreplace
болееmatch
/map
Japt , 13 байт
Принимает ввод в виде строки, без ведущего
#
. Выводит значение rgba в виде массива.Попробуй это
объяснение
Мы неявно принимаем строку как ввод через переменную
U
."00ff0080"
Разбейте строку на массив элементов длиной 2.
["00","ff","00","80"]
Сопоставьте массив и преобразуйте каждый элемент из базовой строки 16 в десятичное число. Из-за следующей новой строки этот массив неявно назначается переменной
U
.[0,255,0,128]
Вставьте последний элемент из массива.
128
Разделите это на 255.
0.5019607843137255
Вставьте результат обратно, а
U
затем неявно выведите окончательный массив.[0,255,0,0.5019607843137255]
источник
PHP , 63 байта
Вывод в виде массива
Попробуйте онлайн!
PHP , 80 байт
Вывод в виде значения rgba, Ввод без
#
Попробуйте онлайн!
PHP , 88 байт
Вывести как значение rgba, ввести с
#
Попробуйте онлайн!
источник
C (gcc) , 139 байтов
Попробуйте онлайн!
Моя другая попытка достигла 145 байтов . Я не очень большой игрок в гольф, так что это может быть короче.
источник
05AB1E , 9 байт
Попробуйте онлайн!
По крайней мере, у нас есть сторонники, такие как Эминья, которые часто используют здравый смысл ... (это то, что вы получаете за гольф в течение всего дня, а затем вы начинаете создавать такие вещи, как
2ô16öRć255/¸ìR
ಠ_ಠ)источник
2ôH`žz/)
Желе ,
1514 байтПопробуйте онлайн!
Как это работает
-1 байт благодаря @EricTheOutgolfer
источник
PHP, 72 байта
Версия вывода массива Jörg непобедима; но есть и другие варианты:
Беги как труба с
-F
.#
не имеет значения, простой вывод CSVили 73 байта (запустить с
-R
):74 байта с пробелами:
не так просто, 81 байт :
источник
Stacked ,
474541 байтПопробуйте онлайн!
источник
Excel, 99 байт
источник
SmileBASIC, 50 байтов
Шестнадцатеричная строка преобразуется в число с помощью VAL (), затем RGBREAD извлекает каждый байт. #L является константой со значением 256.
RGBREAD предназначен для извлечения каналов из цвета ARGB, но на самом деле он просто разбивает 4-байтовое целое число на 4 отдельных байта, поэтому порядок не имеет значения.
источник
Perl 6 , 42 байта
Попробуйте онлайн!
источник
JS ES2015, 84 байта
это функция. Запустите его, используя
источник
Python 3 , 62 байта
Попробуйте онлайн!
источник
q / kdb +, 43 байта
Решение:
Пример:
Объяснение:
источник
APL (Dyalog) , 24 байта
требует
⎕IO←0
по умолчанию во многих системах. Запрашивает ввод в верхнем регистре без#
.Попробуйте онлайн!
⎕D,⎕A
D igits следует A lphabet⍞⍳⍨
запросить ввод текста (мнемоника: консоль с кавычками) и найти запросить кавычками индекс каждой буквы в этом4 2⍴
R- форма в виде четырехрядной двухколоночной матрицы⍉
транспонировать (потому что базовое преобразование работает по столбцам)16⊥
оценивать как базу шестнадцать⊢
yield (служит для разделения 3 и 16)256÷⍨@3
разделить 4- й элемент на 256источник
Python 2 , 54 байта
Попробуйте онлайн!
источник
Ябасич , 96 байт
Еще один основной ответ; Принимает ввод в виде строки и выводит на консоль.
Попробуйте онлайн!
источник
?
.Excel VBA, 90 байт
Функция анонимного непосредственного окна VBE, которая берет входные данные из диапазона
[A1]
и выводит в непосредственное окно VBE.источник
Vim, 46 байт
Принимает ввод без
#
и возвращает, печатая на экране.источник