Winter Bash 2014 в самом разгаре и разве мы не любим шляпы? Особенно секретные шляпы!
Так почему бы не нарисовать одну из секретных шляп?
Соревнование
Ваша задача состоит в том, чтобы нарисовать теплую приветственную шапку пропорционально, на языке по вашему выбору и иметь точную конструкцию, указанную на этой странице .
Как всегда , вы можете визуализировать шляпу в файл или экран, используя векторную или растровую графику. Если ваш вывод растровый, ваше изображение должно иметь размеры 400x400 или более.
Более того, фактическое содержимое шапки (область ограничивающего прямоугольника цветных частей изображения) должно покрывать более 40% выходного изображения.
Характеристики
Изображение ниже перечисляет различные размеры шляпы. Все размеры указаны в единицах, например, в пикселях. Все границы границ на изображении должны быть нарисованы с радиусом 13
единиц.
Цвета :
- Красный в звезде и круговое кольцо - RGB (255, 28, 34)
- Желтый в круге - RGB (255, 202, 87)
- Самый светлый серый - RGB (88, 88, 92)
- Темно-серый - RGB (31, 26, 26)
- Средний серый - RGB (64, 64, 64)
счет
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.
Как предупреждение, использование существующего сжатия (например, встраивание сжатого GIF) попадает в несколько стандартных лазеек .
источник
Ответы:
GolfScript (
376 373 364350 или645 610607 байт)В соответствии с оригинальной спецификацией, которая требовала точной конструкции SVG, SVG в гольфе генерируется в 607 байтах.
Код содержит много непечатаемых символов, так что вот вывод xxd:
Это вариант конструктивного грамматического движка, с которым будут знакомы последователи колмогоровской сложности :
Оказалось, что было бы немного лучше прописать заглавную SVG в гольфе, сжать ее, а затем заглавную после декомпрессии.
При запуске он выдает 840-байтовый SVG:
Я подправил положение на несколько миллипикселей и исправил одну небольшую асимметрию в самой темной серой части.
Но изменения в вопросе и обсуждении в чате показывают, что на самом деле допустимо создать хорошее приближение к SVG, что может быть сделано в 364 байтах. Цепочка декомпрессии похожа, поэтому вывод xxd файла GolfScript:
и генерирует 547-байтовый файл SVG:
Спасибо Полу ЛеБо за то, что он указал на 7-байтовую экономию в SVG, которая переведена на 9 байт в GolfScript, и за его ответ, который продемонстрировал, что звезду можно нарисовать всего с 5 точками. (Используя его ответ, я мог бы получить 329 байт или 323 с некоторыми изменениями в ответе, но мне это неудобно).
Экспортируется на 50% с Inkscape:
Чтобы увидеть структуру, вот SVG, визуализированный со
fill="none"
всем, и некоторые цвета заливки изменены на цвета обводки:источник
SVG (
462 460 454 429 384365 байт)Я знаю, что это не язык программирования, но я подумал, что это будет по крайней мере полезно для любого, кто генерирует SVG-вывод ...
Это основано на SVG Питера Тейлора.
Используя оригинальные координаты и немного оптимизировав пути, мне удалось уменьшить SVG. Я также исправил цвета.
Обновление: исправлена ошибка, указанная Питером Тейлором и положение ректов, и сохранено еще 2 байта.
Обновление 2: добавлено еще одно исправление и предложения от Питера (-6 байт)
Обновление 3: только что заметил, что в инструкциях теперь указано, что все радиусы равны 13, поэтому, воспользовавшись этим и немного оптимизировав пути, я сэкономил еще 25 байтов. Более читаемая скрипка здесь.
Обновление 4: поскольку я уже предполагаю, что SVG встроен в HTML (для автономных SVG требуется объявление пространства имен), я действительно могу сжать это больше. (а) мне не нужны атрибуты ширины и высоты, потому что размер SVG меньше, чем размер по умолчанию, который браузеры предоставляют объектам, размер которых не определен (300x150), и (б) синтаксический анализатор HTML прощает атрибуты, которые не цитат нет, поэтому некоторые из них можно удалить (идея из Squeamish Ossifrage ). Сохраняет еще 45 байтов.
Обновление 5: Использование трюков hsl для удаления цвета и отбрасывания тэгов в конце. Мы сохранили еще 19 байтов. Последнее сначала показалось мне немного обманчивым, но, поскольку оно работает во всех браузерах, я передумал. :) Спасибо hsl!
источник
fill="none"
в группу или скорректировав кривую.<rect>
Должны иметь высоту ,74
а не78
. И я делаю это экономия 5-символа , чтобы заменить его<path>
с обеимиfill
иstroke
,stroke-width="18"
, а затем переехал внутри<g>
и общиеstroke-width="18"
перемещаются из двух путей к<g>
. Наличие другого,<path>
а не a<rect>
также должно немного помочь сжимаемости.Mathematica
787 612 600 514506 байтУдивительный объем необходимого кода. Будет обязательно побежден.
Негольфированная форма
Golfed
источник
HTML + ES6, 533
Фрагмент (модифицированный):
источник
serif
, который даже не является конкретным шрифтом ...HTML + CSS,
676 636625 байтЭто можно много сделать, избавившись от нихТеперь используя трансформации, чтобыleft:XXXpx
и используя какое-то центрирование.центрироватьвсе вместоleft:XXXpx
.Примечание: это работает лучше всего / как и ожидалось в Firefox на Windows
Конечный результат выглядит так:
источник
ActionScript 3.0, 491 байт
Гольф форма:
Выходные данные: http://megaswf.com/file/2708781.swf
источник
var ww=new WarmWelcome(); stage.addChild(ww);
и нарисуйте его во Flash со связью AS3:)
MATLAB R2013a,
551541Это мой первый Код Гольф. Так что если что-то не соответствует правилам, пожалуйста, научите / скажите мне :)
Гольф форма:
Выход (растрированный):
источник
LaTeX / TikZ (613 байт)
Результатом
pdflatex
является PDF-файл со шляпой в виде векторной графики и жесткой рамкой.Ungolfed
Значения взяты из файла SVG, они были более точными (но он также содержит ошибки округления). Самой сложной частью были темные наклонные линии на заднем плане. Они нарисованы как очень толстая линия с закругленными линиями заглавных букв и соединений.
источник
Perl + TK: 555
Новые строки предназначены только для удобства чтения, хотя я потерял так много переменных.
Вот картинка:
Я не думаю, что это почти идеальный пиксель, но это достаточно близко :)
источник