Задача: Вывести швейцарский флаг.
С Днем Швейцарского Национального Дня / Швейцарский Бундесфейтаг / Fête nationalale suisse / Festa nazionale svizzera / Fiasta naziunala svizra!
Детали:
Флаг состоит из белого ( #FFFFFF
) креста на красном ( #FF0000
) фоне. Крест состоит из квадрата 6х6 с плечами размером 6х7, склеенными с каждой стороны. Крест находится в центре квадратного фона 32х32, с расстоянием 6 единиц с каждой стороны. ( Источник )
Выходной размер может быть выбран участником, но изображение должно точно соответствовать этим пропорциям, это означает, что его размер должен быть кратным 32.
Минимальная версия будет выглядеть так:
echo 🇨🇭
- Я предполагаю, что это не разрешеноОтветы:
SVG (HTML5),
94838264 байтаСохранено 2 байта благодаря @ThePirateBay. Сохранено 1 байт благодаря @ATaco. Сохранено 18 байт благодаря @CraigAyre, который указал, что изображение размером 32 × 32 было приемлемым. Как указывает @Shaggy, это предполагает, что ваш фон по умолчанию белый; добавьте 22 байта для флага, который работает на любом фоне:
источник
>
в вашем пути тега необязательно.viewBox
для минимальной версии?<svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
Машинный код x86-16 для DOS, 43 байта
Приведенный выше код предназначен для сборки в виде файла COM, а затем запускается под DOS. Он вызывает видео сервисы ROM BIOS для построения отдельных пикселей флага, формируя представление швейцарского флага 32 × 32 в верхнем левом углу экрана.
Код предполагает, что режим видео уже установлен в режим 0x13, что также означает, что для него требуется дисплей VGA. Можно использовать другие режимы видео, но при наличии VGA у вас есть две вещи: (1) квадратные пиксели и (2) палитра по умолчанию, которая включает в себя истинный 100% красный (
0xFF0000
) (то есть вам не нужно тратить байты на изменение палитры цвета). Перед запуском этой программы вам необходимо переключить дисплей в режим 0x13; следующий код - это все, что вам нужно для этого:Код не делает никаких других предположений и должен работать на любом x86-совместимом оборудовании под DOS-совместимой операционной системой.
Тем не менее, программа завершает работу сразу после рисования флага, поэтому приглашение DOS обычно будет перепечатываться в верхнем левом углу экрана, закрывая несколько верхних строк флага. Поэтому, если вы хотите удивиться истинному выводу, вам нужно приостановить / приостановить работу системы до того, как она
RET
начнет работать. Вот скриншот того, как это выглядит при работе на виртуальной машине FreeDOS:Возможно, это удастся улучшить, записав пиксельные данные непосредственно в видеобуфер, тем более что я уже использую режим 0x13. Я еще не пробовал это.
INT 0x10
это уже довольно короткая инструкция, но если я могу использовать однобайтовые строковые инструкции для записи данных пикселей непосредственно в память, то это может привести к значительной экономии кода.источник
MATL , 29 байт
Попробуйте это в MATL Online!
объяснение
источник
Java 8, 246 + 42 = 288 байт
Спасибо @Aaron за -64 байта.
-4 байта, выводя в файл
a
без расширения.Выражение lamba, которое можно назначить методу функционального интерфейса, который вызывает исключение. Создает файл изображения с именем
a
(файл изображения) в каталоге, в котором выполняется этот файл.Окружающий код, используемый для его запуска: попробуйте онлайн!
Ungolfed
Результат
Сетка предоставлена предварительным просмотром изображения IntelliJ IDEA (по-видимому).
источник
fillPolygon
вызов на дваfillRect
. Я не уверен, что соблюдал размеры, но я придумал,g.fillRect(7,13,18,6);g.fillRect(13,7,6,18)
что короче на 64 байта.png
вместоa.png
и сохранить байт.a
без расширения? Это все еще можно открыть, просто нужно сказать, чтобы открыть в программе просмотра фотографий.Excel VBA,
868579 байтКод
Анонимный VBE функция немедленного окна , которое не принимает входной сигнала и выводит швейцарский флаг на диапазон
[A1:F32]
отActiveSheet
объекта. Это работает, сначала делая квадраты клеток, затем рисуя красную область и наконец рисуя белый крест.Обратите внимание, что схемы, которые удаляют этап окрашивания «креста» швейцарского флага после помещения на красном фоне, на самом деле длиннее, чем указанная выше конфигурация, поскольку для них требуется как минимум 16 адресов ячеек, которые координируются с 8 различными областями флаг
-1 Байт благодаря @ Greedo's за
RowHeight=48
болееColumnWidth=2
-6 байт спасибо @ Greedo за
-1
вместоrgbWhite
Выход
источник
Interior.Color=-1
вместоInterior.Color=rgbWhite
rgbWhite
более десятичное значение16777215
для ясности, я понятия не имел, что-1
будет иметь тот же эффект. Спасибо!C ++, SFML,
406399394 байта-2 байта благодаря pdpi
-10 байтов благодаря Zacharý
SFML (простая и быстрая мультимедийная библиотека) - это библиотека C ++, написанная для облегчения разработки видеоигр и мультимедийных программ.
Код :
Флаг отображается в окне 128x128. Ваша ОС должна иметь возможность отображать окно 128x128 (мой Win8.1 не может отображаться с меньшей шириной)
ВНИМАНИЕ : вы можете добавить эти две строки кода:,
t.setFramerateLimit(60);t.setVerticalSyncEnabled(true);
чтобы ваш процессор не нагревался при запуске кода. Я не поместил их в исходный код для игры в гольф.источник
int main(){for(sf::RenderWindow t(sf::VideoMode(128,128),"");t.isOpen();){t.clear();sf::RectangleShape r({128.f,128.f});r.setFillColor(sf::Color::Red);t.draw(r);r.setFillColor(sf::Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f });t.draw(r);t.display();for(sf::Event e;t.pollEvent(e);)if(e.type == 0)t.close();}}
e.type == 0
=>e.type==0
, возможно, даже!e.type
(не помните приоритет).24.f }
=>24.f}
using namespace sf;
можно?Braindraw, 227 байт (неконкурентный) (обновлен для фактической работы)
Неуправляемая версия (241 байт)
Слегка играемая в гольф версия (227 байт)
Braindraw - это язык программирования моего собственного дизайна. Сегодня, в 15:08, у меня есть работающий переводчик, и я проверил, что программа работает правильно. Однако до начала этого конкурса переводчик не существовал, поэтому я не участвую в конкурсе.
Braindraw такой же, как Brainf ***, за исключением того, что он работает с тремя двумерными массивами, а не с одним одномерным массивом. Эти массивы называются r, g и b и действуют как каналы красного, зеленого и синего цветов. Оператор r перемещает указатель на красный канал и т. Д. И т. Д. Up - это ^, down - это v.
источник
TI-BASIC (только TI-84 Plus C (S) E), 58 байт
источник
Mathematica, 83 байта
следующий от @ ASCII-only (я думал, что это была шутка, но это работает!)
Mathematica, 23 байта
-10 байт от @Jonathan Frech
источник
CountryData["Switzerland","Flag"]
но он может иметь неправильные пропорции"Switzerland"~CountryData~"Flag"
сохраняет вас еще немного"CH"~CountryData~"Flag"
занимает всего 23 байта.HTML + CSS, 15 + 117 байт = 132 байт
Использование оболочки flexbox с
inset
box-shadow
.HTML + CSS, 18 +
139137122 байта = 140 байтовПредыдущий ответ с использованием
border
и промежуточной оболочки flexbox с отрицательнымmargin
.источник
GraphicsMagick (?), 96 байт
Не уверен, как играть в гольф с GM (это следует рассматривать как язык?). Также не уверен, как считать байты здесь ...
С установленным GM, введите указанный код в Windows CMD, вы получите изображение с именем
1.bmp
. Вы можете изменить двойную кавычку на одинарную, если вы используете bash (это должно работать, но я не проверял это).Благодаря Цифровой Травме. использовать только один
-draw
сохранить 8 байтовисточник
-draw
строку:convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
JavaScript + HTML, 99 + 13 = 112 байт
Сохранено 2 байта благодаря user2428118
Сохранено 2 байта благодаря Matheus Avellar
JSFiddle
Чистый JavaScript,
194129 байтJSFiddle
источник
<canvas>
вы можете включить HTML-код непосредственно в свой ответ. См. Codegolf.stackexchange.com/a/136972/47097JavaScript (ES6) в HTML4 (?),
178176 байтДа! Нам не нужно
<canvas>
ни,<svg>
ни даже<img>
!Спасибо Джастину Маринеру, сэкономьте 2 байта.
источник
Löve2D ,
139138 байтСохранено один байт благодаря ThePirateBay
Ungolfed
источник
Python 3 , 190 байт
Сохраните вывод как
image.xpm
и откройте в вашем любимом текстовом редакторе.Попробуйте онлайн!
Выход:
источник
Perl 5 , 184 байта
176 байт код + 8 для
-Mutf8 -p
.Я не совсем уверен, что это так, как требуется, он опирается на пустой ввод, предоставленный в соответствии с этим мета-постом , который не работает на TIO, поэтому он предоставляет новую строку (которая не используется). Вывод на терминал и выглядит так:
Пропорции должны быть в масштабе, основанном на одном символьном пространстве, являющемся двумя вертикальными «пикселями».
Попробуйте онлайн!
Вы можете просмотреть вывод, скопировав из TIO и вставив сюда (это показывает управляющие символы при наведении на элемент) .
источник
GFA BASIC (Atari ST), 62 байта
Отредактированный вручную список в формате .LST. Все строки заканчиваются
CR
, включая последнюю.Расширено и прокомментировано:
Выход
Выход 32х32.
NB: Это действительно использует «белый» цвет, хотя он выглядит серым на эмуляторе (и на реальном тоже, если вы не включите яркость достаточно высоко).
источник
R
171140 байт.(в некоторой степени) разгневанный
Спасибо @gregor за сохранение некоторых байтов
Запустить его!
источник
e=2
вместоeach=2
,t
вместоtype
,c
дляcol
,b
дляborder
. И0*1:4
короче чемc(0,0,0,0)
.plot
:plot(0,0,'n',l,l,xaxs="i",yaxs="i")
(назначениеm="i"
фактически стоит вам один байт). При этом доходит до 141 байта.l
аxlim
/ylim
не нужны, простоplot(0:32,0:32,...)
. Я также адаптировал ваш подход и опустил его до 117 здесь, используяrect
вместоpolygon
.Октава,
105 байтов73 байтаПримечание: перевод строки добавлен для ясности, не включен в число байтов
РЕДАКТИРОВАТЬ: спасибо flawr за сохранение довольно много байтов!
Вот результат на octave-online.net, благодаря sanchises
источник
x(32,32,3)=0; x(:,:,1)=1; x(7:26,14:19,:)=1; x(14:19,7:26,:)=1; imshow(x*255)
GIF, 97 байт
Дешевый и байтовый, но оно того стоит.
РЕДАКТИРОВАТЬ: Некоторые символы не в коде выше, вот пастбин для hexdump GIF.
РЕДАКТИРОВАТЬ: сжатый до 97 байт с онлайн-инструментом.
источник
HTML + JavaScript (ES6), 13 + 112 = 125 байт
HTML + JavaScript (ES6), 13 + 114 = 127 байт
источник
clearRect
, надеюсь, у вас все в порядке?C #
265/266209 байтовЯ записал символы «пробел» в консоль при изменении цвета фона. Но если вы считаете, что он слишком высокий, и вы считаете один символ размером 8 x 16 пикселей, вы просто удваиваете значения около «j», например, (+ 1 байт и +,
c.ReadKey();
чтобы он останавливался):56 байтов сохранено благодаря TheLethalCoder
источник
namespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(" "))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(6<j&j++<26&i>13&i<19)?15:12);}}}
Тикз,
145143 байтаВот это "безликий"
Вот это еще немного
Это делает 3 прямоугольника большим красным и два меньших белых для плюса.
Вот как это выглядит. Это действительно не выглядит иначе, чем другие.
источник
documentclass
на github несколько недель назад. и, кажется, нет никаких требований к фону окна. С этим\documentclass{g}\input tikz
должно получиться сэкономить 5В. Вы, вероятно, можете сэкономить больше, работая в простом TeX , даже с TikZR, 109 байт
Используется,
frame
чтобы избежать предварительной настройки графика, но область построения по умолчанию находится на интервале [0,1] вместо [0,32]. Также использует тот факт, чтоrect
векторизация. Размер окна печати по умолчанию - 7 дюймов х 7 дюймов. Это выводит следующее:R 125 байтов
По умолчанию для
png
квадрата 480x480 пикселей. На выходе получается следующий png файл:источник
R, 112 байт
Тем не менее, чтобы гарантировать соотношение сторон, нам нужно еще 5 байтов на общую сумму 117:
С большим вдохновением от ответа Алекса Экстелма и благодаря Rift за сохранение еще нескольких байтов.
источник
bg="red"
наbg=2
те же в палитре по умолчаниюПостскриптум,
301 286187 байтСпасибо анонимному редактору, предложившему сокращение на 99 байт!
источник
Красный , 79 байт
Код:
Результат:
Объяснение:
источник
Растровое изображение, 160 байт
Вот растровое изображение с глубиной цвета 1 бит с использованием определения цвета 24 бит. Последние шесть байтов второй строки - это палитра, а после нее - массив пикселей. Каждые четыре байта содержат целую строку пикселей.
Я попытался обрезать конечные нули, но для просмотра изображений требуется, чтобы для всего холста было определено достаточно пикселей.
источник
Python 2,
929189 байтВывод в двоичном формате, использование:
Увеличение глубины цвета позволило мне использовать пространство для максимального значения
источник
Tcl / Tk, 94
Если он работает на интерактивной оболочке, можно сократить
canvas
доcan
иgrid
вgri
Tcl / Tk, 98
Если он работает на интерактивной оболочке, можно сократить
canvas
доcan
Tcl / Tk, 101
источник