В 2015 году международный аэропорт Портленда начал замену своего культового ковра . Я хочу, чтобы вы написали программу для рисования своего старого ковра в минимально возможном количестве байтов.
Ковер:
Характеристики
Вот ссылка на масштабируемое изображение в формате PDF одной плитки. Ваш вывод должен соответствовать относительным размерам и размещению этого изображения.
Все цвета в вашем конечном изображении должны быть в пределах 15 от каждого значения RGB в указанном изображении. Они перечислены ниже для вашего удобства.
Red Green Blue Teal: 0, 168, 142 Magenta: 168, 108, 185 Orange: 247, 58, 58 Light Blue: 90, 166, 216 Dark Blue: 0, 77, 117
Ваш вывод должен быть не менее 150x150 пикселей и должен быть квадратным. Если вы выбираете вывод в масштабируемом формате, таком как векторное изображение, вы должны точно соответствовать изображению.
Вы можете вывести изображение в любом существующем ранее формате.
Это код-гольф, поэтому вы должны стремиться минимизировать количество байтов в вашем коде.
источник
Ответы:
Чистый HTML, 873 байта
HTML + CSS, 625 байт
источник
Тикз,
725693681671 байтПопробуйте онлайн!
объяснение
Большая часть кода является оберткой:
Это небольшая вариация стандартной обертки Tikz в том, что она также имеет строку
\usepackage{xcolor}
чтобы мы могли правильно создавать цвета.Первое, что сделано, это
line width=20,every node/.style={minimum size=20}]
это устанавливает линии и узлы, чтобы иметь правильный размер.Как только это будет сделано, мы определим цвета, которые мы будем использовать для различных частей изображения:
Теперь, когда все настроено, мы рисуем фон для нашего холста:
(Я не буду включать изображение этого, потому что это просто чирок, но я буду включать изображения каждого шага)
Первый узел, который мы добавляем - это оранжевый узел слева от центра холста.
Теперь нарисуем голубые и пурпурные узлы. Есть 7 синих узлов и 4 синих узла, но мы можем нарисовать дополнительные узлы, которые будут покрыты линиями позже, поэтому мы будем рисовать 7 из каждого.
Теперь мы нарисуем все группы из 3 точек, используя один
\foreach
циклТеперь мы рисуем правильную линию. Эта линия будет простой линией со смещениями
.35
в каждом направлении, чтобы соответствовать размеру узла.Теперь мы должны нарисовать синие линии и квадраты на оси X. Мы нарисуем их одной линией, используя собственный рисунок тире.
Этот шаблон
[dash pattern=on20off8.5on162.5off8.5]
создает квадрат с длинным сплошным хвостом. Наша линия начнется снизу и не будет полностью покрывать 2 цикла модели.И теперь мы закончили.
источник
\definecolor
соHTML
спецификацией (а неRGB
) позволяет указывать цвета с использованием шестнадцатеричного значения.буквальный файл PNG,
283,234227 байтРЕДАКТИРОВАТЬ : Использование онлайн-сервиса сжатия изображений https://compress-or-die.com/ , это сократилось еще на 7 байт.
albn @ alexhi
227 байт - это фактический размер двоичного файла carpet.png. При кодировании в base64, как показано в приведенном выше блоке, он на несколько байтов длиннее (308 байтов). Инкапсуляция этого в HTML-фрагменте, который отображает изображение правильно, добавит еще несколько байтов:
HTML,
414,343, 336 байтИзменить : я удалил кавычки и закрытие>, как предложил Шегги. Также сжал изображение еще на
17, 24 байтаисточник
=
и закрытие>
. Вот 366-байтовая версия, над которой я работал до того, как увидел ваш ответ:<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLlaptj3OjrqGXAuAAAAp0lEQVRo3u3YQQqFMAxFUbeQLbiFbsH9r8k3y8CmTiKm7b2Dwv/CgUAD4jF3TYGBRdgKmRqPCQa28gaMZ20KDGz5DQhnbQoMTG2wAcPR/ScY2HeYVw4zBQYWYDUvbRLWFS/lBxhYhM3bpXzMcWBgEVa5U70cpsDAnkf1FxcwMDAwMLBczP8DAwuwmpc2HzMFBhY8qHlp8zFTYGCdyn8GKrhOYBtjv3QDvf+Zic+8bOsAAAAASUVORK5CYII
Mathematica, 285 байтов
Легче читать:
Строки 1–3 определяют короткие имена для функций, наиболее важным из которых является
s
отрисовка квадрата с центром в координатах, которые он получает (в действительности в 3 раза больше его координат, для соответствующего масштабирования). В строке 4 определяется цветовая функция с использованием «сокращенной» RGB-системы Mathematica:RGBColor["#xyz"]
гдеxyz
шестнадцатеричные цифры означаютRGBColor[{17x, 17y, 17z}]
(так, чтобы каждая координата имела 16 одинаково разнесенных опций, работающих от 0 до 255). Первые команды в строках 6–10 переключают текущий цвет, используя горячие цвета, которые ближе всего к назначенным пяти цветам (при округлении до значения, кратного 17, никакое значение не будет больше 8).Линия 6 рисует большой чирок. Линия 7 рисует линию пурпурных квадратов, линия 8 рисует линию оранжевых квадратов и один оранжевый квадрат. Линия 9 рисует линию голубых квадратов. Линия 11 рисует три диагональные линии темно-синих квадратов, а также один темно-синий квадрат внизу. Наконец, линия 12 рисует три длинных темно-синих прямоугольника. Выход ниже:
(Совет по гольфу: команда
Cuboid
, предназначенная для трехмерных графических объектов, прекрасно работает в 2d и корочеRectangle
.)источник
Питон, 420
источник
HTML / SVG,
550542521 байтисточник
HTML, 366 байт
Воскресенье получил ответ Base64 , пока я еще работал над этим; если он / она решит использовать его, я удалю этот ответ.
Если строка Base64 сама по себе является правильным ответом, то это всего лишь 335 байтов:
источник
HTML / SVG + JavaScript (ES6),
500499 байтДля
>
того, чтобы это функционировало как сниппет, требуется дополнительное , см. Эту скрипту для реального кода.объяснение
Массив массивов сопоставляется с функцией
a
, создавая клоныrect
в HTML, вставляя их после первоначальногоrect
и установки ихfill
,x
,y
,width
&height
атрибуты. Каждый массив содержит значения для этих атрибутов в указанном порядке, причем все пропущенные значения устанавливаются параметрами по умолчаниюa
. Казалось бы, ненужныйr.id++
позволяет использоватьcloneNode()
, гарантируя, что есть только 1rect
сid
c; это избавляет от необходимости использовать смехотворно дорогоdocument.createElementNS("http://www.w3.org/2000/svg","rect")
.источник
PHP + SVG, 425 байт
расширенный
Результат кода в фрагменте HTML
PHP + SVG, 375 байт
Это число байтов может быть достигнуто с помощью сжатия SVG
источник