Там было много проблем , другого флага Отправленных , но не один для национального флага из Франции . Эта неделя кажется подходящим временем.
Создайте этот флаг в наименьшем количестве байтов:
- Изображение должно быть в соотношении 3: 2, размером не менее 78 пикселей в ширину и 52 пикселей в высоту.
- Каждая полоса занимает одну треть ширины.
- Полосовые цвета слева направо RGB:
(0, 85, 164)
, (255, 255, 255)
, (239, 65, 53)
.
- Изображение может быть сохранено в файл или передано в формате STDOUT в любом стандартном формате файла изображения или может быть отображено.
- В качестве альтернативы выведите блок текста шириной не менее 78 символов, состоящий из непробельных символов, который отображает флаг, используя цветовые коды ANSI для его раскрашивания. (Используйте стандартный синий, белый и красный.)
- Встроенные изображения флагов / библиотеки не допускаются.
Самый короткий код в байтах побеждает.
Leaderboard
Фрагмент стека в нижней части этого поста создает таблицу лидеров из ответов а) в виде списка кратчайшего решения для каждого языка и б) в качестве общей таблицы лидеров.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать имя языка ссылкой, которая будет отображаться во фрагменте кода:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 64140; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 42156; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
(0, 35, 149)
,(255, 255, 255)
,(237, 41, 57)
.echo 🇫🇷
не совсем большойОтветы:
CJam,
2322 байтаВыше это hexdump, который может быть отменен с
xxd -r
.Ценой двух дополнительных байтов - всего 24 байта - мы можем вместо этого использовать цвета фона, делая вывод немного красивее.
Как это устроено
В обеих программах мы используем побег последовательность ANSI
\x9bXYm
- гдеX
находится3
на цвет переднего плана и4
фонового цвета, иY
определяет цвет для использования - для переключения между тремя цветами флага.Другая программа похожа.
Выход
источник
Чистый Баш (на OSX), 84
Терминал OSX по умолчанию поддерживает полноцветные эмодзи. Не уверен, считается ли это текстовым или графическим выводом.
Вывод выглядит так:
В качестве альтернативы:
Bash с утилитами OSX, 56
dc
Выражение:3^26-1
и печатает его в троичной22222222222222222222222222
3^26
. Выход в троичный это1111111111111111111111111100000000000000000000000000
tr
затем переводит 210 символов в 🔵⚪️🔴.yes
выводит эту строку бесконечно.sed 26q
останавливает вывод на 26 строках.источник
Desmos,
3012 байтПопробуйте онлайн.
Я не совсем уверен, если это действительно так, пожалуйста, дайте мне знать, если есть какие-либо проблемы.
источник
Python 2, 47 байт
Содержит непечатаемые - вот hexdump (обратимый с
xxd -r
):Использует управляющие коды ANSI для печати цветных символов в STDOUT - я выбрал «F» для Франции. Нет онлайн-ссылки, потому что ideone не поддерживает коды выхода ANSI в выходных данных.
Спасибо Деннису и Хнору за полезные советы.
Скриншот из xterm:
источник
in [0]
->in[0]
\x1b
. 2. Выделение жирным шрифтом не является необходимым. 3. Я не уверен, относится ли это и к искусству ANSI, но вопрос, кажется, требует соотношения 3: 2.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
Персонаж выглядит немного лучше, напримерprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 байт
87 88 121 122 149Сохранено 27 байт благодаря @insertusernameherehere
Экономит 9 байт благодаря @Joey
Сохранено 1 байт благодаря @sanchies
Экономит 1 байт благодаря @Neil
Используя много злоупотреблений синтаксисом HTML, это может быть довольно коротким.
Скриншот вывода:
Или попробуйте (убедитесь, что ваш браузер поддерживает SVG):
источник
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
тоже работает (нет"
), сохраняя целый байт.Brainfuck $ , 153 байта
Выводит изображение с цветовыми кодами ANSI. Я выбрал высоту 30, как у Мего .
Ссылочная реализация 2009 года, указанная на странице esolangs, пропала. Вы можете запустить его, используя этот интерпретатор, созданный мной, который поддерживает все со страницы esolangs.
Показать фрагмент кода
Brainfuck, 258 байт
Это в основном то же самое, но просто в старом Brainfuck.
Или, если вы предпочитаете этот код в oOo CODE (984 байта):
источник
Bash + ImageMagick,
607773 байта(тьфу, +17 символов из-за цветовых требований, которых я раньше не замечал ...)
Вывод в файл
a
в формате netpbm:Может также выводить в формате PNG, если вы измените имя файла на
a.png
(+4 символа).Выход:
источник
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
вместо-sample
; Кроме того, обратная косая черта, кажется, не нужнаLaTeX, 139 байт
Спасибо @WChargin за сохранение 21 байта.
На странице формата А4 будет напечатано следующее изображение размером 12 см * 8 см:
Обратите внимание, что «Страница 1» также напечатана в нижней части страницы
источник
asymptote
решения ...s.\newcommand\z[1].\def\z#1
чтобы сохранить кучу байтов. Кроме того, вы можете избавиться от некоторых, используя\def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!
— то есть, используйте свои собственные разделители вместо фигурных скобок для группировки\input color
\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!\end{document}
Pyth, 27 байт
Есть некоторые непечатаемые символы, поэтому вот hexdump:
Это создает файл
o.png
шириной ровно 78 пикселей и высотой 52 пикселя:Объяснение:
источник
save it as an image o.png
, но нигде нет ".png"?python3 pyth.py code.pyth
, то вы можете найти его в том же каталоге.HTML (режим причуд), 68 байт
Это использует режим причуд для визуализации флага.
HTML- код ОЧЕНЬ недействителен, но работает в стандартном браузере Android 4.4.2 и в Firefox 42.0 (в Windows 7 x64).
Флаг отображается с правильным размером и стандартными красными и синими цветами. Все веб-страницы начинаются со стандартного белого фона.
Как альтернатива:
Вполне допустимы версии HTML5 (141 байт):
Проверьте его действительность на: https://html5.validator.nu/
Печать экрана результата:
источник
>
?style="..."
если вы собираетесь во втором примере.<html>
, нет<head>
, нет<body>
, нет</tr>
, нет</td>
и нет закрытия всех пропущенных тегов.data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>
это не сработало. Исправьте это сейчас, и используйте ссылку, чтобы проверить это.TI-Basic,
524442 байта(предполагается значение по умолчанию [-10,10,1] по [-10,10,1] области графика)
Без первых двух строк будет на 4 байта короче, но по умолчанию будет иметь оси и будет выглядеть не так хорошо.
Выглядит так:
Если затенение не подходит для вызова, дайте мне знать!
Без первых двух строк это выглядит так:
источник
ffmpeg,
110113116117119108100 байтОтобразить, используя ffplay, 100 байт:
Сохранено в файл, используя ffmpeg, 108 байт:
Текущая версия команды будет прервана с ошибкой, НО выведет одно изображение «.png», как показано ниже.
источник
white
вместо#ffffff
: значения должны быть одинаковыми.CSS, 127
128144байтаНет необходимости в другом теге, работает исключительно с
body
-element.Правки
display:block;
и некоторых;
.}
.источник
JavaScript, 140
143147151153байтаПравки
2*i*26
наi*52
. Благодаря Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
-loop. Благодаря ETHproductions .with
-statement. Благодаря Дендробиум .fillStyle=["#0055a4","#ef4135"][i]
наi?"#ef4135":"#0055a4"
.источник
2*i*26
может стать52*i
, нет?with
выражение:with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=0;i<2;fillRect(i++*52,0,26,52))fillStyle=["#0055a4","#ef4135"][i]
x=(d=document).body.appendChild(d.createElement
холст).getContext
2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 байт
Вывод отображается:
Можно также сделать 49 байтов с
если ты не против осей и границ
источник
Blitz 2D / 3D ,
154108 байтЭто приводит к тому же результату, что и в примере, приведенном в вопросе (за исключением сглаживания по краям, где встречаются цвета).
Вывод отображается и выглядит так:
источник
Mathematica,
6394103 байтаКогда я впервые увидел этот вызов, я подумал, сладкий! Mathematica идеально подходит для этого! пока я не заметил, что встроенные модули были запрещены: '(
Но ждать! Я могу использовать гистограммы!
(Спасибо Мартину Бюттнеру за то, что он сбрил 5 байтов, но добавил 16)
Выглядит так:
Если вы добавите
,Axes->None
это выглядит так:Если вы не заботитесь о границе, вы можете использовать это: (95 байт)
Выглядит так:
Без осей:
источник
Axes->None
, Вы должны также указатьAspectRatio->2/3
. ПереименованиеRGBColor
просто:r=RGBColor;...r["..."]
. Вы также можете использовать префиксную нотацию, чтобы сохранить еще два байтаr@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. Красный выглядит достаточно близко.Javascript (ES6) 117 байт
Рисует это в консоли
источник
'white'
Я думаю , что короче делать:#fff
. Кроме того, красный и синий цвета должны соответствовать цветам, указанным в спецификацииi=c=s=[]
вместоi=0,c=[],s=''
того, чтобы обновлять цвета, которые могут немного помочь ...red
иblue
). Это вторая точка, считая снизу. Это в пределах спецификации.pb , 68 байт
Ничего себе, вызов, который ПБ на самом деле хорошо подходит для! Это немного и далеко друг от друга.
Когда я писал спецификацию для pb, я включал цветной вывод в основном в шутку. Язык был назван в честь «кисти», почему бы не сделать цвет? Помимо примеров программ, это второй раз, когда я использовал его. Это реализовано с кодами ANSI, как требует вопрос.
Я использовал «М» в качестве символа для вывода, потому что он довольно плотный.
Выход:
Я изменил размер скриншота по вертикали, чтобы он составлял две трети его высоты, потому что буквы не квадратные. Вывод 78 на 52, но оригинальный скриншот выглядит действительно неправильно.
С комментариями и отступами и барахлом:
источник
C, 115 байтов
Содержит непечатные материалы:
Чтобы эта программа работала, нужно сделать пару вещей:
ESC [48;2;<r>;<g>;<b>m
escape-последовательность «truecolor».Это также выглядит лучше, если фон вашего терминала черный.
Чтобы изменить высоту флага, передайте аргументы командной строки программе. Для каждого переданного аргумента флаг становится на одну строку короче. Это не ошибка, это особенность!
Выход:
источник
gcc
(версия 5.1.1). Какие-либо конкретные флаги, необходимые для компиляции? «ac: 1: 10: предупреждение: ISO C99 требует пробела после имени макроса #define c» \ x1b [48; 2;% d;% d;% dm »MATLAB,
827978 байтВывод выглядит так:
источник
fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)
и экономит 2 байта. :) Я бы также использовал точки с запятой вместо новых строк, чтобы избежать распечатки лишних вещей.Visual Basic + Excel,
618137 байтПросто любопытно посмотреть, как это можно сыграть в гольф.
РЕДАКТИРОВАТЬ: Любопытство насыщено, благодаря @Neil и @JimmyJazzx, 618 байтов упал прямо до 137 байтов
источник
Range("A1:C13").Interior.ColorIndex = 5
и,Range("G1:I13").Interior.ColorIndex = 3
кажется, достаточно.ActiveWorkbook.Colors
для указания точных значений RGB. В Excel 2007 есть дополнительные параметры цвета, но я их не знаю случайно.Sub a():Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
Sub a:Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
CSS, 102
110111114байтисточник
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- на один байт короче}
.66%
на0
.Дьялог АПЛ (
4744)Результат:
источник
2*8 11 10
?iKe , 43 байта
Это пример программы iKe «сырой кортеж» - это просто описание origin (
0 0
), palette (3 7#"#0055A4#FFFFFF#EF4135"
) и растрового изображения (+52#'&3#26
). Вам нужно обернуть подобное описание в функцию или использовать ссылки на представления, если вы хотите анимировать его.Палитра - очень простой способ создания серии CSS-цветов, шестнадцатеричных эквивалентов спецификации.
Если бы требования к цвету были менее строгими, мы могли бы использовать одну из встроенных палитр iKe и сохранить значительное количество символов:
Попробуйте это в вашем браузере .
Редактировать:
Сохраненный один байт, используя короткий
#FFF
цвет CSS для белой полосы:Если кому-то еще интересно играть с iKe, есть руководство по репозиторию на github . Вот еще одна проблема, которую я решил с помощью iKe.
Изменить 2:
Сохраненный один байт с более простым способом создания растрового изображения:
На мой вопрос в ОП не ответили, но для записи, если допускаются более гибкие требования к цвету, эта программа будет использовать 30 байт с использованием палитры Windows 3.1:
После публикации этой проблемы в iKe появилась функция, которая автоматически центрирует текстуры, нарисованные без позиции, что может сохранить еще 3 байта, но это будет противоречить правилам:
источник
Октава,
7776 байтОтображает изображение:
источник
Обработка, 100 байт
Отображает это:
(Наивное решение короче моего первого.)
источник
size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
Рубин,
564745 байтASCII
источник
PHP, 70 байт
Выше это hexdump, который может быть изменен с
xxd -r
. Кроме того, он также может быть создан с помощью следующего сценария PHP:Я предполагаю настройки по умолчанию, так как они не имеют INI (вы можете отключить ваш локальный INI с помощью
-n
опции). Создает изображение .bmp (288 x 192), которое должно быть передано в файл. Это настолько большой, насколько я могу сделать это без влияния на количество байтов.Образец использования
Выход
источник
ShaderToy (GLSL), 147 байт
Смотрите это здесь
Не особенно захватывающе. Я уверен, что есть способы играть в гольф больше; Я возьму трещину, когда вернусь домой.
источник