“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Попробуйте онлайн!
Как это работает
“×Ɗ¡‘
дают кодовые точки персонажей между кавычки в желе в SBCS , которые 0x11 = 17 , 0x91 = 145 и 0х00 = 0 .
ŒP
строит powerset массива кодовых точек, давая
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
Последние две записи соответствуют комбинациям, которые содержат как 80 , так и FF , поэтому мы должны отбросить их.
»Ṫ¦209
состоит из трех частей:
Ṫ
(tail) удаляет последний массив кодовых точек, т. е. [17, 145, 0] .
»209
берет максимум каждого целого числа в оставшейся части powerset и 0xD1 = 209 , заменяя их все на 209 .
¦
(разреженный) перебирает элементы оставшейся части powerset. Если соответствующий индекс найден в [17, 145, 0] , элемент заменяется на все 209 . Если нет, то он остается нетронутым.
¦
не является модульным, поэтому он изменяет только последний массив (индекс 0 ) в оставшейся части блока питания. Индексы 17 и 145 слишком велики и не имеют никакого эффекта.
Результат выглядит следующим образом.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
вычисляет третью декартову степень каждого массива, то есть массив всех трех наборов элементов каждого массива.
Fd⁴
выравнивает результат и вычисляет частное и остаток каждого целого числа, деленное на 16 .
ịØH
индексы (на основе 1) в "0123456789ABCDEF , поэтому 0x11 , 0x91 , 0x00 и 0xD1 отображаются в " 00 " , " 80 " , " FF " и " C0 " (соответственно).
s3ṢQ
разбивает пары символов на 3 кортежа, сортирует кортежи и дедуплицирует.
Наконец, Y
объединяются уникальные кортежи, разделенные переводом строк.
“0FC8”
как у нас есть00
,FF
,C0
и80
.Python 3,
1341291251089190 байтЯ думаю, что здесь еще много занятий гольфом. Предложения по игре в гольф приветствуются!
Изменить: -9 байт и большое спасибо Мего за помощь в форматировании строки. -17 байт от выяснения лучшего способа сначала напечатать строку. -17 байт от выяснения лучшего способа написать цикл for. -1 байт благодаря подсказке xnor использовать
i%3//2*"\n"
вместо"\n"*(i%3<2)
.Ungolfing
источник
*
.i%3//2*"\n"
сохраняет байт.JavaScript (ES6),
109107 байтСохранено 2 байта, благодаря Нейлу
Это на
79 байт короче, чем просто возврат необработанной строки в обратных галочках.Тест
Показать фрагмент кода
источник
.replace(/./g)
то же самое, что и длина.map().join
, но.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
сохраняет два байта.PowerShell,
113106 байтДа, я не нашел ничего более короткого, чем просто печать буквальной строки ...Спасибо @ Martin Smith за сокращение 7 байт с помощью простой замены (которую я полностью пропустил). Таким образом, мы по крайней мере на 7 байт короче, чем просто жесткое кодирование. Ура!Но это скучно!
Так что вместо ...
PowerShell v4, 128 байт
Пространство
[system.consolecolor]
имен определяет цвета консоли (изначально), доступные для консоли PowerShell. Если мы ссылаемся на них через целочисленный массив, как это, значением по умолчанию является имя (например,Black
илиWhite
подобное). Мы объединили это со строкой, которая была-split
в пробелах, так что теперь у нас есть массив строк с именами цветов.Мы перебираем их,
|%{...}
и каждая итерация извлекает соответствующее[system.windows.media.colors]
значение. Стрификация по умолчанию для этих объектов - это цвет в#AARRGGBB
формате как шестнадцатеричное значение, поэтому мы используем его, инкапсулируя этот вызов в строку с блоком сценария"$(...)"
. Но, поскольку нам не нужны альфа-значения или хеш, мы берем конец[3..8]
строки, и нам нужно, чтобы-join
этотchar
-array вернулся в строку. Затем, простоSort-Object
положить их в правильном порядке.источник
00
и.Replace(7,'00')
составляет <21 символов.-replace
для8
и80
с тем же количеством байтов (сохраняет 12 нулей, что является-replace8,80
длиной). Выполнение этого дляFF
более длинного на два байта из-за кавычек, необходимых вокруг"FF"
в-replace2,"FF"
заявлении.Pyth -
644844 байтаСупер простая базовая компрессия.
Попробуйте это онлайн здесь .
источник
MATL , 39 байт
Попробуйте онлайн!
источник
05AB1E , 57 байтов
Попробуйте онлайн!
То, что нам нужно вывести в основном (перевернуто и разделено):
Который в десятичном виде:
Который в Base-214:
Это самое простое решение, которое я мог бы придумать, потому что ни в коем случае я не бью Денниса. Потратил час, пытаясь, и ничто не разбило его идею.
источник
PHP, 92 байта
Попробуйте онлайн!
просто замена из цифр в качестве ключа в массиве со значениями strtr
источник
Пакет, 137 байт
Да, это так скучно. Предыдущая 148-байтовая попытка:
К сожалению, вы не можете передать вывод команды
for
или acall:
, поэтому я должен вызывать себя рекурсивно.источник
Пайк, 42 байта
Попробуй это здесь!
источник
Befunge,
8369 байтПопробуйте онлайн!
Цвета кодируются в строке, которую вы видите в первой строке, по два бита на компонент цвета, с дополнительным старшим битом, установленным для принудительного ввода каждого значения в диапазон ASCII (за исключением случая 63, который будет вне диапазона как 127 ).
Список цветов в стеке затем обрабатывается следующим образом:
источник
C #, 195 байт
К сожалению, это бьет, с огромным отрывом, более интересным, хотя и невероятно запутанным (у меня было намного больше удовольствия писать это) C #, 270 байтов
источник
()=>@"string_here"
(это приводит кAction<string>
). Я также предлагаю использовать дословную строку (@
), чтобы вы могли просто помещать новые строки непосредственно в строку без необходимости экранировать их.C (gcc) , 99 байтов
Попробуйте онлайн!
После попытки составить список чисел и вывести их при сортировке, я сравнил наивное решение, которое было отрезвляющим:
Это составляет 140 байтов по сравнению с моей попыткой на 200 и изменением.
Решение состояло в том, чтобы думать об этом как о тексте, как о любом другом, хотя и с небольшим алфавитом. Каждый цвет можно рассматривать как триплет 2-битных индексов в алфавите {0xff, 0xc0, 0x80, 00}. Процесс цвет -> триплет -> число -> символ (со смещением +35, чтобы сделать их все для печати и избежать необходимости в побегах) можно проиллюстрировать следующим образом:
Тогда это просто вопрос перебора полученной строки и вырезания соответствующих частей строки алфавита.
источник