1 ноября, выпуск программных головоломок и Code Golf закончится, поэтому в течение следующих 11 месяцев мы хотим сохранить некоторые воспоминания о том, когда мы не учились.
Напишите программу, которая создает значок PPCG, см. Ниже.
- Изображение должно быть не менее 64х64 пикселей.
- Синий должен быть цветом # 62B0DF. Фон может быть белым или светло-серым.
- Изображение не обязательно должно быть пикселированным, как здесь.
- В качестве альтернативы, создайте текст (размером не менее 64x64 непробельных символов), используя стандартные яркие цветовые коды ANSI голубого и белого.
- Встроенные изображения и импорт логотипа PPCG запрещены.
Это код гольф, поэтому применяются стандартные правила. Самый короткий код в байтах побеждает.
Ответы:
Bash (OSX),
33272318 байтВы слышали человека, как нам нравится.
Я знаю, что это конкурс популярности. Но, эй, когда вы можете написать код в гольф, почему бы и нет?Теперь это кодовый гольф. \ o / Это было действительно на момент публикации.
В какой-то момент для меня даже было сделано исключение! Но, как @AlexA. указал...
Я согласен с этим и поэтому не хочу, чтобы это воспринималось как ответ. Это не значит, что я больше не буду пытаться играть в гольф больше. ;)
Спасибо @ ΚριτικσιΛίθος за сокращение 6 байт с причудливым коротким URL-адресом!
Спасибо @ ev3commander за сокращение ДРУГИХ 5 байтов с еще более красивым и коротким URL!
Спасибо @kennytm за указание на то, что я могу уменьшить размер протокола и удалить кавычки, сэкономив мне еще 4 байта!
источник
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 байт
Это выводы
Это, наверное, самый короткий код, с помощью которого вы все еще можете распознать логотип ... Я создал ужасный язык :(
Попробуй здесь
Примечание
Это было отправлено до того, как правила были изменены, по текущим правилам этот ответ недействителен. Я оставлю это здесь, чтобы, возможно, вдохновлять людей
источник
JavaScript
Примечание. Этот ответ был сделан до существенного изменения правил, поэтому этот ответ не является конкурентным.
Это печатает в вашей консоли браузера через некоторую сумасшедшую и потрясающую обработку строк.
Я сделал более короткую версию этого, но я не могу найти его нигде.
Chrome / Firefox
Эта версия просто удваивается на каждый пиксель, поэтому выглядит более пропорционально
Сафари
long_string_here
Является ппм , я написал этот сценарий некоторое время назад , чтобы напечатать произвольное изображение на консоль .Как это работает? Ну, JavaScript имеет функцию в
console.log
где вы можете предоставить CSS для стилизации сообщения.Я Unicode символ
█
и цвет, который правильный цвет, который извлекается из промилле.Для отображения любого другого изображения выполните:,
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
затем скопируйте вывод в<long_string_here>
Полный код
Поскольку это довольно много, я поместил полный код в pastebins, чтобы вы могли их запустить
Chrome / Firefox: пастин
Сафари: пастин
Результат
Firefox Result
Safari Result
источник
Рубин с обувью
Пример вывода:
источник
Javascript (ES2015), 199 байт
(+72 байта CSS)
Мой код печатает логотип в
<body>
элемент страницы через некоторые последовательности Юникода. Приветствуются предложения по улучшению кода (особенно для0
задачи -pads)Javascript (новые строки вставлены для удобства чтения)
CSS
Результат
Неуправляемый и объясненный
Если мы рассмотрим исходную иконку 16x16 PCG, изначально опубликованную, мы можем закодировать информацию в двоичном формате.
Например, первая строка будет закодирована в том виде, в
1100 0000 0000 0011
котором она[0, 1]
отображается[blue, white]
. Каждый двоичное число может быть легко сохранены в десятичном формате , так1100 0000 0000 0011
это49155
. Массивсодержит всю информацию (в десятичном формате) о цвете каждого пикселя. Каждый элемент массива представляет линию для рисования. Обратите внимание, что некоторые строки
0
(полные синие линии) или их длина меньше16
цифр (строка, начинающаяся с синего пикселя): тогда нам нужно добавить эти двоичные числа вправоmap
Функция добавить 15 нулей слева плюс двоичного числа каскадной. Таким образом, результат разрезается на16
пиксель влево. Теперь массив на самом делеПосмотрите поближе на цифры выше: мы почти видим логотип PCG. :)
Обратите внимание, что если мы храним эту информацию в массиве, нам нужно использовать 16x18 байт (288 байт). Этот подход требует вместо 135 байтов
Следующий шаг - нарисовать каждую линию. Конструкция
перебираем массив
values
(особенность ES6) и добавляем в телогде
[...l
] представляет двоичную строку в виде массива. Например, первая строка будет читаться какзатем снова мы используем
map()
для преобразования каждого значения:если значение
0
тогда, это становитсяLEFT SEVEN EIGHTHS BLOCK (U+2589)
иначе, это - пробелEM SPACE (U+2003)
. Короче это заданиепреобразует каждый
0
или1
либо в квадратный блок, либо в пробел: затем массив соединяется и вместе с завершающей последовательностью новой строки добавляется к телу.CSS, который я использовал, исправляет
line-height
иletter-spacing
(я тестировал на Chrome, поэтому результат может немного отличаться в других браузерах)источник
Brainfuck, 120148 байт
Этот ответ сейчас неконкурентный. Это было до того, как правила были изменены, и это не имеет абсолютно никакой надежды на победу как Code-Golf.
Код Brainfuck для вывода шестнадцатеричного значения изображения. Очень и очень долго.
Вот ссылка на вставку и первые несколько строк. https://paste.ee/p/LtcCy
источник
Оснастка , 16 блоков
Скажи мне, если это неверно.
источник
Javascript ES6, 461 байт
Мне нужно больше работать над сжатием.
источник
Жевательная резинка , 175 байт
Один из редких случаев Bubblegum полезен для графического вывода !
Запустите в терминале, который поддерживает управляющие коды ANSI.
Обратный hexdump с
xxd -r
Вот скриншот вывода:
Примечание. На моей машине с Windows с терминалом MinGW бинарный файл Python для Windows не выводит коды ANSI правильно, поэтому вышеприведенное было,
python <esolangs reference implementation>.py <infile> | cat
но на компьютерах с Linux оно должно работать правильно.источник
Javascript (ES6), 192 байта
Это займет сжатую версию SVG D пути. Пробелы удаляются, поэтому все аргументы должны быть в виде одного десятичного числа, поэтому любое число умножается на 20, прежде чем записывается в фактический svg.
Вывод: Демо: https://jsfiddle.net/Luy6qj80/
источник
LibreLogo ,
122116115 байтКод:
Результат:
Объяснение:
Предыдущие попытки:
116 байт:
122 байта:
источник
JavaScript, 680 байт
Ну, я уже закончил это для оригинального конкурса, правила которого были радикально изменены. Это определенно не самый короткий код, который вы можете придумать. Он был разработан для конкурса популярности и создает оригинальный значок пиксель за пикселем. У него также есть еще некоторые функции. :)
Вы можете вызвать функцию с тремя параметрами:
m
идет мета и меняет цвет соответственно. И если вы найдете его маленьким, используйтеb
для его увеличения от 16x16px до 64x64px . Наконецa
оживляет логотип, как будто он выгравирован на синей доске. Значение - это скорость для каждого шага анимации.Ungolfed
Выход
По умолчанию
Анимационная
источник
Python 3, 10,069 байт
Записывает гекс из оригинального логотипа в новый файл.
источник
R 189 байт
С отступами для наглядности:
Я беззастенчиво краду метод из моего старого ответа : я беру 16-значное представление base-2, превращаю его в матрицу 16x16 из 1 и 0 и строю график как есть.
источник
Google Blockly , 140 блоков
Производит
Добавлю объяснение, если требуется. Попробуй здесь
Предложения по уменьшению массивной функции слева приветствуются!
источник
Python 2, 211 байт
источник
05AB1E , 49 байтов
Попробуйте онлайн!
источник
Excel VBA,
252246245237 байтСохранено 6 байтов благодаря Тейлору Скотту.
Сохранено еще 8 байтов благодаря вдохновению от Тейлор Скотт
Код должен быть запущен с кодовой страницы рабочего листа и добавит форму к этому рабочему листу. В этом нет ничего необычного, но в нем прямо используется закругленная прямоугольная выноска, на которой основан значок. (Для
AddShape
,106
соответствуетmsoShapeRoundedRectangularCallout
.)Форматирование не добавляет много, но облегчает чтение:
Существует также однострочное решение, предназначенное для запуска в непосредственном окне, которое на 1 байт длиннее:
источник
()
вp()
и преобразованияWith ActiveSheet. ...
вWith[Sheet1]. ...
Sheet1
Хотя я не уверен, что первый лист назван так . Я полагаю, мы можем предположить, что пользователь запускает код в новом файле.Sheet1
объекте по умолчанию, должно быть принятой нормой, если вы упомянули, что это является частью условия ввода / вывода как части вашего решенияSheet1
объект - так что вы можете сбросить байт, заменивWith[Sheet1].
наWith Sheet1.
Sheet1
это просто кодовое имя по умолчанию для первого листа. Это неплохое уменьшение на 0,4%.MATLAB,
153 150140 байтовКод принимает массив из 16-битных чисел (к сожалению, нет способа их кодирования, который уменьшает количество байтов, кроме чтения из предварительно сохраненного двоичного файла). РЕДАКТИРОВАТЬ: С небольшим творческим подходом к созданию массива, я сохранил 3 байта, и немного больше и дополнительная переменная, я могу сохранить еще 10 в дополнение к этому.
С помощью этого массива он преобразуется в двоичную строку, где ascii '1' представляет синий цвет, а ascii '0' - белый. Массив является 2D в этой точке, потому что каждое из 16 чисел становится строкой из 16 символов.
Я вычитаю 47, чтобы преобразовать это в массив 1 и 2 (необходимый для следующего бита), где каждый элемент представляет один пиксель. Опять же, это остается как 2D и наши данные изображения.
Затем изображение масштабируется в 8 раз, используя ближайшего соседа, чтобы получить изображение, которое по крайней мере должно иметь минимальный размер 64x64px - фактически это 128x128, потому что как-то я разделил 64 на 16, чтобы получить 8> _ <(не спросить!).
Наконец, это отображается с использованием цветовой карты, где любая 1 становится белой, а любая 2 становится требуемым оттенком # 62B0DF синего цвета.
Это вывод:
источник
Обработка, 211 байт
Сохранение пикселей внутри целых чисел со знаком (кажется, наиболее эффективный способ, я, возможно, попробую 2 ^ 64 целых чисел), а затем печать их во фрейме.
источник
Swift (детская площадка), 599 байт
Я решил попробовать, так как рисовать в Swift довольно просто, и обычно это не игра в гольф. Закончилось потерей драгоценных байтов с текстом ... Черт возьми
NSDescriptiveVariableNames
!Вот как это выглядит на детской площадке:
Я думаю, что я мог бы играть в гольф больше, совмещая такие вещи, как
CGRectMake
группировка объектов в функции и т. Д.источник
PHP, 145 байт, не конкурирует
Я должен использовать непустые и цвета вместо этого, но я слишком устал.
Угадайте, это добавит 10 байтов или около того к счету, может быть, больше.
источник
Excel VBA, 178 байт
Anonymous VBE Immediate оконная функция, которая не принимает никаких входных данных и выводит PCG Favicon (точно так же, как в подсказке выше) в диапазон
источник
C (gcc) , 188 байт
Попробуйте онлайн!
Использует управляющие коды ANSI для печати 128 горизонтальных и 64 вертикальных цветных пробелов.
(Изображение изменено.)
источник
C ++ с SFML , 607 байт
Код, который вызывает функцию:
Требования :
Вам необходимо иметь действительный файл ttf, вызываемый
a.ttf
в текущем каталоге, в котором выполняется исполняемый файл, чтобы он мог загружать шрифты для отображения текстаУ вас должны быть соответствующие библиотеки SFML DLL в текущем каталоге, где выполняется исполняемый файл
Результат:
Пояснения:
источник
ткл / тк, 113
Ткл / тк, 144
источник