Когда я наткнулся на этот вопрос, я вспомнил, что я когда-то также видел точные правила для постройки южнокорейского флага. И это совсем другая конструкция.
Таким образом, вы должны нарисовать точную конструкцию этого сейчас!
Спецификация
Вы можете отобразить флаг в файл или на экран, используя векторную или растровую графику. Если ваш вывод растровый, ваше изображение должно иметь размеры 450x300 пикселей или более.
Все соотношения длины и положения должны быть точно такими, как показано на следующей диаграмме:
Обратите внимание, что центры двух маленьких кружков совпадают с диагональю.
Для цветов необходимо использовать следующую палитру:
- Белый: #FFFFFF
- Черный: # 000000
- Красный: # C60C30
- Синий: # 003478
Черная граница не должна быть нарисована, если ваша система рисования не позволяет вам указать холст 3: 2 по техническим причинам (в противном случае вы должны использовать холст 3: 2, а флаг должен заполнить все это). Если вам нужно добавить границу, она может быть сколь угодно толстой - флаг следует рассматривать строго внутри черной границы. Любые другие линии помощи или указатели длины не должны быть нарисованы. Т.е. флаг должен появиться именно так, как на первом изображении.
счет
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.
Как предупреждение, использование существующего сжатия (например, встраивание сжатого GIF) попадает в несколько стандартных лазеек .
источник
CountryData["ROK","Flag"]
, не считается?Ответы:
PHP / HTML / SVG, 324
(разрывы строк добавлены для удобочитаемости)
Сжатые данные расширяются до тех же данных SVG, что и мой предыдущий ответ, показанный ниже, но с двумя изменениями для облегчения сжатия:
Два
<use>
раздела расширены до исходного содержания<defs>
раздела. Это делает исходный текст длиннее, но уменьшает энтропию, поэтому он лучше сжимается.В первом
<g>
элементе я изменилсяtransform=translate(36,24)rotate(33.69)
наtransform=rotate(33.69)translate(43.27)
. Это имеет тот же эффект геометрически, но сжимает лучше, потому что последовательность><g transform=rotate(
теперь появляется дважды.По умолчанию PHP будет служить таким образом
Content-Type: text/html
, поэтому неправильный синтаксис XML не должен быть проблемой.SVG / HTML, 463
Синтаксический анализатор HTML не слишком беспокоится о правильном синтаксисе, поэтому мы можем покончить с кавычками в параметрах, если они не содержат пробелов. Должно быть возможно сжать это дальше с небольшим количеством Javascript.
источник
Python + Pycairo,
371 370366 байтВыводит крошечный SVG-файл с именем
F
.источник
C(*[.77,0,.05,.2,.19,.47][i::2])
корочеC(*[(.77,.05,.19),(0,.2,.47)][i%2])
s=SVGSurface("F",12,8);c=Context(s)
а не простоc=Context(SVGSurface("F",12,8))
?HTML + CSS,
966 906 843 792762 байтаНе победитель в любое время, но очень весело рисовать в CSS. Это может быть много в гольф, хотя.
CSS, HTML :
;border:1px solid
просто для показа, поскольку у<body>
тега есть четкие границы, которые могут наблюдаться инспектором или подобными инструментами, как указано в ОППРИМЕЧАНИЕ Работает только в Firefox (или Chrome canary / dev) из-за использования не зависящих от производителя преобразований и градиентов.
Увидеть это в действии
источник
0deg
->0
(дважды) и удалитьleft:0
изa:before
. В HTML вы можете использовать<p><ul></ul>
. (<p>
будет неявно закрыт до<ul>
):before{content:''}
и:after{content:''}
больше , чем просто добавить еще один элемент (несмотря на это , на самом деле выглядит лучше).-webkit-
перед ним всеtransform:
s, но само собой разумеется, что это сделает его немного длиннее!BBC Basic,
349343 символов ASCII, размер файла токена 330Загрузите эмулятор на http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Использование правильных цветов добавило много, но использование всех графических команд вплоть до необработанных кодов VDU дает в целом экономию в 6 символов по сравнению с моим исходным постом. Вся графика на BBC micro выполняется с помощью машинных управляющих кодов ASCII, поэтому вместо использования высокоуровневых графических команд вы можете подавать байты прямо на контроллер VDU (как правило, короче, но с большим расходом на удобочитаемость). Значение, заканчивающееся точкой с запятой вместо запятой, представляет собой 16-разрядное представление с прямым порядком байтов в 2 байта.
Неуправляемая версия
В начале программы я перемещаю начало координат в центр экрана.
Я не рисую большие цветные полукруги. Вместо этого я запускаю цикл, который рисует маленькие красные и синие круги, вращаясь против часовой стрелки. Я делаю почти 3 полных оборота (начиная с синего справа), что явно более чем достаточно для заполнения диска. Я останавливаюсь на 3-м обороте, просто когда синий в правом нижнем углу находится в правильном положении, чтобы выровняться с барами (которые должны быть нанесены на график)
Когда угол правильный, я рисую одну из полос. вектор x, y для рисования текущего маленького синего круга служит для указания, в каком направлении должна быть полоса. Для каждого из 3 оборотов
a*7DIV44
вычисляется различное значение целого числа , которое указывает, следует ли рисовать первый, второй или третий столбец с внутренним краем в 6 / 8,7 / 8 или 8/8 единиц от центра ( в соответствии с единицами измерения, использованными в спецификации вопроса.) Поскольку программные единицы составляют 1/4 от единицы в спецификации, это все равно половина единицы, поэтому мы снова делим на 2 перед сохранением в переменную «b», чтобы избежать повторного деления пополам потом.Столбцы нарисованы сплошными, затем середина удаляется при необходимости. Это предотвращает сгибание перегибов половин. Переменная z указывает, должен ли быть отрезан стержень. То есть, когда у отрицательных для средних баров и когда х положительно для других баров.
MOVE
это абсолютный ход.MOVEBY
это относительный ход.PLOT133
рассматривает последние две графические позиции курсора, плюс новую, указанную (в относительных координатах) как три угла параллелограмма, и строит этот параллелограмм.Вывод (и обсуждение языковых ограничений)
Я выбрал режим экрана 1280x800 логических пикселей = 640x400 физических пикселей, который по умолчанию имеет черный фон. Для этого я рисую белый прямоугольник от -600, -400 до 600400, чтобы действовать как «холст».
BBC Basic может обрабатывать 16 цветов одновременно с перепрограммируемого поддона. Но он поддерживает только 18-битный цвет, тогда как вопрос определяет цвета как 24-битный. Цвета как можно ближе.
источник
Python 3 черепаха (
552549 байт)( Изображение в полном размере )
Изменить: Теперь, когда у нас есть фрагменты стека, вот тест фрагмента стека с использованием Skulpt , с помощью ответа ArtOfCode здесь . К сожалению, Skulpt еще не полностью реализовал Python, поэтому мне пришлось деформировать половину моего кода, чтобы заставить это работать. Другими словами, этот фрагмент предназначен только для того, чтобы показать, как работает моя программа (без необходимости использовать Python).
(Кроме того, я обнаружил, что это может не работать на некоторых браузерах ...)
Актуальный код:
Поскольку черепаха очень медленная, если вам нужны мгновенные результаты, вы можете добавить
t.tracer(0)
после первой строки перед запуском сценария.Примечание: по какой-то причине черепаха продолжает рисовать то, что выглядит как дополнительные черные пиксели, хотя я уже звонил
up()
, и я понятия не имею, почему ...источник
HTML + ES6, 388
Если ваш браузер поддерживает ES6, вы можете просмотреть его в JSFiddle или запустить фрагмент.
Он создает флаг из некоторых основных форм, сначала поворачивая холст, чтобы учесть углы.
источник
<canvas width=576 height=384 id=D><script>c=D.getContext('2d')
на 9 байт меньше. Кроме того, поскольку вся страница белая, я думаю, вам нужно нарисовать границу.Mathematica
404450источник
С ++ СЛИШКОМ БОЛЬШОЙ
Попытка сделать это с помощью моей собственной библиотеки чертежей PPM . Это технически масштабируемо, но я ограничен моей функцией рекурсивного заполнения, потому что она ненадежна и любит segfault, я думаю, что она использует слишком много памяти, поэтому я не позволю пользователю устанавливать масштаб. Изображение нерегулярное, потому что координаты, которые я ввел для каждого угла столбцов, немного смещены.
Я установил его, чтобы начать с черного фона, затем поместил белый круг в середине, а затем красные и синие круги. Используются рекурсивные заливки, чтобы добавить остаток красного и синего. Затем нарисуйте прямоугольники с белыми линиями, чтобы отметить черные полосы. Разделите черный фон на 4 секции с белыми линиями и используйте 4 рекурсивных заливки, чтобы сделать каждую секцию белой. Выполнение этого за 1 проход вызвало бы ошибку. Это все еще очень медленно, чтобы сделать.
Основной код Ungolfed (остальная часть библиотеки слишком большая, игра в гольф это не имеет значения)
источник
PostScript ,
572477 байтГольф-код:
Ungolfed код:
Результат:
источник
Python 2, 483 байта
Возможные улучшения:
Вывести в виде текста PPM, использование:
бета-версия без игры
источник