Нарисуйте национальный флаг Франции


106

Там было много проблем , другого флага Отправленных , но не один для национального флага из Франции . Эта неделя кажется подходящим временем.

Создайте этот флаг в наименьшем количестве байтов:

Французский флаг

  • Изображение должно быть в соотношении 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


4
Эти значения RGB не соответствуют вашему изображению. Из того, что я вижу, у вас есть RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
стакан

8
Компактное хранение указанной палитры является, вероятно, самой сложной частью этой проблемы в большинстве языков. Учитывая это, графическим решениям кажется несправедливым разрешать вывод ANSI со стандартной палитрой. Почему бы не позволить графическим решениям использовать чистые (0, 0, 255) / (255, 255, 255) / (255, 0 0) для выравнивания игрового поля?
JohnE

15
Каждая полоса занимает одну треть ширины. Возможно, было бы более интересно использовать военно-морской вариант: согласно постановлению от 17 мая 1853 года военно-морской флот вернулся к использованию пропорций 30:33:37, которые он теперь продолжает использовать, поскольку взмах флага делает части дальше от фал кажется поменьше.
Бен Джексон

34
echo 🇫🇷не совсем большой
Digital Trauma

5
@JohnE Я согласен. Правила цветов дают ASCII-art решениям огромное преимущество. Они также не делают задачу более «сложной» (просто добавляет байты) для языков, которые могут использовать произвольные цвета, и дисквалифицируют несколько классных языков, которые не могут выполнять произвольные цвета.
спагетто

Ответы:


38

CJam, 23 22 байта

00000000: 27 9b 22 5c 22 25 1f 22 66 7b 69 27 6d 32 37 2a  '."\"%."f{i'm27*
00000010: 7d 4e 5d 32 36 2a                                }N]26*

Выше это hexdump, который может быть отменен с xxd -r.

Ценой двух дополнительных байтов - всего 24 байта - мы можем вместо этого использовать цвета фона, делая вывод немного красивее.

00000000: 27 9b 22 2c 2f 29 00 22 66 7b 69 27 6d 53 32 36  '.",/)."f{i'mS26
00000010: 2a 7d 57 4e 74 32 36 2a                          *}WNt26*

Как это устроено

В обеих программах мы используем побег последовательность ANSI \x9bXYm- где Xнаходится 3на цвет переднего плана и 4фонового цвета, и Yопределяет цвет для использования - для переключения между тремя цветами флага.

'<CSI>       Push the '\x9b' character (Control Sequence Introducer).
"\"%<US>"    Push the string of the ISO 8859-1 characters with code
             points 34, 37, and 31.
f{           For each character in the string, push the CSI and that
             character; then:
  i            Cast the character to integer.
  'm27*        Push 27 m's. The first completes the control sequence,
               the remaining 26 will be printed.
}
N]           Wrap the generated array and "\n" in an array.
26*          Repeat it 26 times.

Другая программа похожа.

Выход

выход


Я в настоящее время не уверен, насколько высоким я должен сделать "изображение".
Деннис

Я пошел с 78x30 в моем ответе. Эти размеры в Lucida Console 9 pt (шрифт по умолчанию для xterm) дали самое близкое значение 3: 2.
Mego

Вы можете использовать полный блок для «красивости»
Мэтью Ро

75

Чистый Баш (на OSX), 84

Терминал OSX по умолчанию поддерживает полноцветные эмодзи. Не уверен, считается ли это текстовым или графическим выводом.

printf -vs %26s
for i in {1..26}
do echo ${s// /🔵}${s// /⚪️}${s// /🔴}
done

Вывод выглядит так:

введите описание изображения здесь


В качестве альтернативы:

Bash с утилитами OSX, 56

yes `dc -e3do26^d1-dn2/*p|tr 201 🔵🔴⚪️`|sed 26q

dcВыражение:

  • рассчитывает 3^26-1и печатает его в троичной22222222222222222222222222
  • делит это на 2, а затем умножает на 3^26. Выход в троичный это1111111111111111111111111100000000000000000000000000

trзатем переводит 210 символов в 🔵⚪️🔴. yesвыводит эту строку бесконечно. sed 26qостанавливает вывод на 26 строках.


51
Терминал, который поддерживает смайлики. Ух ты.
rr-

6
Первое решение не использует правильные значения RGB и не использует стандартные цвета ANSI, не так ли?
Дверная ручка

@ Doorknob Вы правы, конечно, ни одно из решений не делает - так что этот ответ может перешагнуть черту. Я попросил у ОП уточнения
Цифровая травма

3
Это просто Unicode.
подземный

1
@steve Я действительно не ожидал, что этот ответ станет настолько популярным, особенно учитывая, что есть вопросы относительно его обоснованности . Можете ли вы сказать «да» или «нет» относительно того, считаете ли вы, что оно действительно? Спасибо!
Цифровая травма

51

Desmos, 30 12 байт

3x>10
3x<-10

Попробуйте онлайн.

Я не совсем уверен, если это действительно так, пожалуйста, дайте мне знать, если есть какие-либо проблемы.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Цвета по умолчанию - красный и синий в этом порядке (я полагаю), поэтому их не нужно устанавливать.
спагетто

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Тогда это генератор случайных флагов;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Они не случайны для меня - если ввести два неравенства вручную, я получаю красный, а затем синий.
Mego

1
Это странно. Я тоже становлюсь красным и синим.
Lirtosiast

2
Я не думаю, что это ... и при этом это точно не соответствует соотношению сторон.
Дверная ручка

51

Python 2, 47 байт

s="[3%smF";print(s%4*26+s%7*26+s%1*26+"\n")*30

Содержит непечатаемые - вот hexdump (обратимый с xxd -r):

00000000: 733d 221b 5b33 2573 3b31 6d46 223b 7072  s=".[3%s;1mF";pr
00000010: 696e 7428 7325 342a 3236 2b73 2537 2a32  int(s%4*26+s%7*2
00000020: 362b 7325 312a 3236 2b22 5c6e 2229 2a33  6+s%1*26+"\n")*3
00000030: 30                                       0

Использует управляющие коды ANSI для печати цветных символов в STDOUT - я выбрал «F» для Франции. Нет онлайн-ссылки, потому что ideone не поддерживает коды выхода ANSI в выходных данных.

Спасибо Деннису и Хнору за полезные советы.

Скриншот из xterm:

флаг


1
У вас там есть дополнительное место. in [0]->in[0]
mbomb007

2
1. Вы можете использовать реальные байты ESC вместо \x1b. 2. Выделение жирным шрифтом не является необходимым. 3. Я не уверен, относится ли это и к искусству ANSI, но вопрос, кажется, требует соотношения 3: 2.
Денис

Это короче подразделам в параметрах с форматированием: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Нажмите F, чтобы отдать дань уважения
Riking

4
Персонаж выглядит немного лучше, например print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m

44

HTML / SVG, 76 байт 87 88 121 122 149

Сохранено 27 байт благодаря @insertusernameherehere

Экономит 9 байт благодаря @Joey

Сохранено 1 байт благодаря @sanchies

Экономит 1 байт благодаря @Neil

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52

Используя много злоупотреблений синтаксисом HTML, это может быть довольно коротким.


Скриншот вывода:

Выход флага Франции


Или попробуйте (убедитесь, что ваш браузер поддерживает SVG):

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52


3
Я пытался победить вас с помощью CSS, и теперь я поиграл в ваш SVG, что он даже меньше, чем мое решение CSS. : D Это самое короткое, что я мог получить для работы в Safari, Chrome и Firefox, его длина составляет 122 байта :<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusername здесь

1
@insertusernamehere Спасибо, это спасло 27 байтов! Мне удалось продвинуть этот гольф до удивительных 88 байтов
Downgoat

3
У меня fill=#0055a4 />тоже работает (нет "), сохраняя целый байт.
Sanchises

3
@ отправляет целый байт? о_О вау : D
developerbmw

4
@developerbmw На самом деле, было бы более впечатляющим сэкономить половину байта, когда вы думаете об этом.
Sanchises

29

Brainfuck $ , 153 байта

+++++++++++++[->>>++>+++++++>++++>>>>++++++++>+++<<<<<<<<<<]>>>+>>#->$#>$#+++++++>$--->+++++[<]<<+++++[->+++++>++++++<<]>+#>($#([-]>[.>]<[<])>>>>+++<<<<)

Выводит изображение с цветовыми кодами ANSI. Я выбрал высоту 30, как у Мего .

Ссылочная реализация 2009 года, указанная на странице esolangs, пропала. Вы можете запустить его, используя этот интерпретатор, созданный мной, который поддерживает все со страницы esolangs.

Brainfuck, 258 байт

Это в основном то же самое, но просто в старом Brainfuck.

>>+++++++++++++[-<<++>>>>++>+++++++>++++>++++>+++++>++++>++++++++>+++[<]<]>>+>>->>------>--->+++++[<]<<<++++[>+++++[->+++++<]>+[>>[.>]<[<]<-]>>>>>+++[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>------[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>+++[<]<++++++++++.[-]<<-]

Или, если вы предпочитаете этот код в oOo CODE (984 байта):

one day ThERe WIlL Be PEaCE iN ThIS wORlD
OnE DaY ThERe WiLl Be peaCe iN ThIS wOrld
one day theRe WIlL be pEaCE iN ThIS wORlD
OnE DaY theRe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCE iN ThIS wOrld
OnE DaY ThErE wilL bE PeaCe IN this woRlD
one day There will Be pEacE in ThiS woRld
one Day TheRe will Be PEaCE iN ThIS wOrLd
onE dAY thEre WilL Be PEaCE iN ThIs World
OnE DaY ThERe WIlL bE pEace in ThIS wORlD
OnE DaY thErE Will Be PeAce in this WoRLd
one dAY thErE wilL bE PeaCE in tHIs world
one day theRe WIlL Be PeAce iN tHIS wORlD
OnE DaY ThErE wIll be PEaCE iN ThIS wORlD
one dAY thERe WiLl be peace In THis worLD
onE dAy thErE WilL Be peACe in this world
one Day TheRe wIll Be pEace In thIs WORlD
OnE DaY ThERe WiLl Be peaCE iN ThIS wORlD
OnE day tHEre WIlL bE peace in tHiS World
oNE daY tHere WiLL be PEace IN this world
one day ThERe WIlL bE peaCe IN thIS wORlD
OnE DaY ThERe WIlL Be PEaCE iN THis WoRld
oNE daY thERe wiLL

25

Bash + ImageMagick, 60 77 73 байта

convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"

(тьфу, +17 символов из-за цветовых требований, которых я раньше не замечал ...)

Вывод в файл aв формате netpbm:

llama@llama:~$ convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
llama@llama:~$ file a
a: Netpbm image data, size = 78 x 52, rawbits, pixmap

Может также выводить в формате PNG, если вы измените имя файла на a.png(+4 символа).

Выход:

введите описание изображения здесь


1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Цифровая травма

@DigitalTrauma Спасибо! Это экономит 4 символа и не завершается с ошибкой. (Кроме того, я никогда не знал, что ImageMagick может читать / писать в STDIN.)
Ручка двери

Вы можете использовать -scaleвместо -sample; Кроме того, обратная косая черта, кажется, не нужна
aditsu

25

LaTeX, 139 байт

Спасибо @WChargin за сохранение 21 байта.

\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}

На странице формата А4 будет напечатано следующее изображение размером 12 см * 8 см:

введите описание изображения здесь

Обратите внимание, что «Страница 1» также напечатана в нижней части страницы


1
Ну, это примерно на 100 байт короче моего asymptoteрешения ...
Арктур

1
s.\newcommand\z[1].\def\z#1чтобы сохранить кучу байтов. Кроме того, вы можете избавиться от некоторых, используя \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!— то есть, используйте свои собственные разделители вместо фигурных скобок для группировки
wchargin

1
Вы также можете\input color
wchargin

1
Для полноты, исправлена ​​версия (139 байт):\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}
wchargin

24

Pyth, 27 байт

 .w*52[smmdGc3CM"\0U¤ÿÿÿïA5

Есть некоторые непечатаемые символы, поэтому вот hexdump:

00000000   2E 77 2A 35  32 5B 73 6D  6D 64 47 63  33 43 4D 22  .w*52[smmdGc3CM"
00000010   5C 30 55 A4  FF FF FF EF  41 35                     \0U.....A5

Это создает файл o.pngшириной ровно 78 пикселей и высотой 52 пикселя:

введите описание изображения здесь

Объяснение:

.w*52[smmdGc3CM"........
               "........  a string containing the bytes 
                          0, 85, 164, 255, 255, 255, 239, 65, 53
             CM           convert them to integers
           c3             split into 3 lists
      smmdG               duplicate each list 26 times
     [                    put them into a list
  *52                     and duplicate it 52 times
.w                        save it as an image o.png

1
На секунду я подумал, что неправильно понял спецификацию PNG.
Примо

1
save it as an image o.png, но нигде нет ".png"?
Рев

1
@AsidShout Как вы называете программу? Если вы используете python3 pyth.py code.pyth, то вы можете найти его в том же каталоге.
Якуб

20

HTML (режим причуд), 68 байт

Это использует режим причуд для визуализации флага.

HTML- код ОЧЕНЬ недействителен, но работает в стандартном браузере Android 4.4.2 и в Firefox 42.0 (в Windows 7 x64).

<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>

Флаг отображается с правильным размером и стандартными красными и синими цветами. Все веб-страницы начинаются со стандартного белого фона.



Как альтернатива:

Вполне допустимы версии HTML5 (141 байт):

<!DOCTYPE html><title>x</title><table style=width:78px;height:52px><tr><td style=background:#0055a4><td><td style=background:#ef4135></table>

Проверьте его действительность на: https://html5.validator.nu/

Печать экрана результата:

результат проверки


1
Ты уверен? Когда у меня есть HTML-файл только с этой строкой, он не работает в Firefox, Chrome и Safari. Если файл содержит другие HTML-элементы после этой строки, он работает для меня. Так, может быть, вы не можете отказаться от отставания >?
имя пользователя здесь

1
«Совершенно верно»? Так и должно быть, style="..."если вы собираетесь во втором примере.
mbomb007

3
@ mbomb007 Я собираюсь создать наименьший допустимый HTML-код. Он проверяется с помощью официального валидатора, поэтому он является абсолютно корректным HTML. Вы можете попробовать это сами, если не верите.
Исмаэль Мигель

1
@ mbomb007 Кроме того, пропущенные кавычки - это наименьшая проблема: нет <html>, нет <head>, нет <body>, нет </tr>, нет </td>и нет закрытия всех пропущенных тегов.
Исмаэль Мигель

1
@insertusernamehere Вы были правы. Это было ошибка на Android тоже. Я проверил это на jsfiddle. Но при доступе data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>это не сработало. Исправьте это сейчас, и используйте ссылку, чтобы проверить это.
Исмаэль Мигель

17

TI-Basic, 52 44 42 байта

GridOff
AxesOff
11
Shade(-Ans,Ans,Xmin,Xmin/3
Shade(-Ans,Ans,Xmax/3,Xmax,1,1,Ans

(предполагается значение по умолчанию [-10,10,1] по [-10,10,1] области графика)

Без первых двух строк будет на 4 байта короче, но по умолчанию будет иметь оси и будет выглядеть не так хорошо.

Выглядит так:

введите описание изображения здесь

Если затенение не подходит для вызова, дайте мне знать!

Без первых двух строк это выглядит так:

введите описание изображения здесь


Я бы также включил версию без первых трех строк, просто для сравнения.
GamrCorps

1
Я думаю, что вы можете просто перейти от Ymin к Ymax. Вы также можете принять экран по умолчанию от -10 до 10. Я также не уверен в правильности этого, так как красные и синие области только заштрихованы наполовину.
lirtosiast

@ThomasKwa Я отредактировал свой пост, чтобы показать, почему я не использовал только Ymin и Ymax. Я не осознавал, что могу использовать экран по умолчанию, но вы не знаете, что это за экран по умолчанию. Не могли бы вы уточнить? Что касается «полутени», то есть как TI-Basic затеняет вещи, если они недействительны, я быстро их изменю.
DanTheMan

1
Экран по умолчанию: Ymin = Xmin = -10, Ymax = Xmax = 10. Калькулятор запускается с этими настройками окна, AxesOn и т. Д., Поэтому вы можете их использовать.
Lirtosiast

1
@ Doorknob Насколько я знаю, это невозможно сделать, не прибегая к колдовству.
DanTheMan

17

ffmpeg, 110 113 116 117 119 108 100 байт

Отобразить, используя ffplay, 100 байт:

ffplay -f lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3

Сохранено в файл, используя ffmpeg, 108 байт:

ffmpeg -lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3 -t 1 .png

Текущая версия команды будет прервана с ошибкой, НО выведет одно изображение «.png», как показано ниже.

введите описание изображения здесь


8
Ух ты. Злоупотребление ffmpeg для создания изображений ...
Коул Джонсон

Хех, я видел этот вопрос и думал сделать то же самое. Хорошая работа, делающая это компактным. Если это разрешено, вы можете сделать его немного меньше, используя whiteвместо #ffffff: значения должны быть одинаковыми.
Llogan

Я знаю. Не был достаточно обеспокоен. Сделаем это сейчас.
Гьян

#Fff работает?
ev3commander

Но я могу пропустить f в f.png
Гьян

16

CSS, 127 128 144 байта

body:before,body:after{content:'';float:left;width:33%;height:100%;background:#0055a4}body:after{float:right;background:#ef4135}

Нет необходимости в другом теге, работает исключительно с body-element.

Правки

  • Сохранено 16 байт путем удаления display:block;и некоторых ;.
  • Сохранено 1 байт , удален трейлинг }.

6
Хотя технически CSS не является языком программирования по нашим определениям.
Конор О'Брайен

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Я знаю - просто хотел победить SVG .
insertusername здесь

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ правильно, это неверный ответ.
Мего

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ если css был сохранен как файл SASS, так как SASS - это язык сценариев, будет ли это верным ответом?
fcalderan

6
Да, обычный CSS - это действительный файл SASS.
ev3commander

16

JavaScript, 140 143 147 151 153 байта

   with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=2;i--;fillRect(i*52,0,26,52))fillStyle=i?"#ef4135":"#0055a4"


Правки

  • Сохранено 2 байта путем замены 2*i*26на i*52. Благодаря Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Сохранено 4 байта путем рефакторинга for-loop. Благодаря ETHproductions .
  • Сохранено 2 байта с помощью with-statement. Благодаря Дендробиум .
  • Сохранено 2 байта , превратив приращение в декремент. Благодаря Shaun H .
  • Сохранено 3 байта путем замены fillStyle=["#0055a4","#ef4135"][i]на i?"#ef4135":"#0055a4".

3
2*i*26может стать 52*i, нет?
Конор О'Брайен

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Конечно, можно. Благодарю. Это далеко за пределами моего времени сна.
insertusername здесь

2
Вы можете сбрить 2 байта, используя 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]
Дендробиум

2
сохранить байт: x=(d=document).body.appendChild(d.createElementхолст ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Это хорошо. Большое спасибо.
insertusername здесь

13

R, 59 байт

frame();rect(0:2/3,0,1:3/3,1,,,c("#0055a4",0,"#ef4135"),NA)

Вывод отображается:

введите описание изображения здесь

Можно также сделать 49 байтов с

barplot(rep(1,3),,0,col=c("#0055a4",0,"#ef4135"))

если ты не против осей и границ

введите описание изображения здесь


2
Соотношение кажется неправильным. Я думаю, что у вас есть соотношение 2: 3 на одноцветном прямоугольнике вместо 3: 2 на весь флаг.
Роковая

Соотношение может быть скорректировано вручную, изменив размер графика.
Flodel

3
Чтобы претендовать, ваша заявка должна работать «из коробки». Иначе, любой может опубликовать 6-пиксельное решение и сказать: «Вы можете увеличить вручную».
Sanchises

4
Вы говорите «топоры», я говорю «флагшток».

2
@sanchises: я француз, и я говорю f ** k это. LIBERTE!
flodel

12

Blitz 2D / 3D , 154 108 байт

Это приводит к тому же результату, что и в примере, приведенном в вопросе (за исключением сглаживания по краям, где встречаются цвета).

Graphics 800,533
ClsColor 255,255,255
Cls
Color 0,35,149
Rect 0,0,267,533
Color 237,41,57
Rect 533,0,267,533

Вывод отображается и выглядит так:

введите описание изображения здесь


12

Mathematica, 63 94 103 байта

Когда я впервые увидел этот вызов, я подумал, сладкий! Mathematica идеально подходит для этого! пока я не заметил, что встроенные модули были запрещены: '(

Но ждать! Я могу использовать гистограммы!

r=RGBColor;BarChart[{1,1,1},ChartStyle->{r@"#0055a4",White,r@"#ef4135"},BarSpacing->0,AspectRatio->2/3]

(Спасибо Мартину Бюттнеру за то, что он сбрил 5 байтов, но добавил 16)

Выглядит так:

введите описание изображения здесь

Если вы добавите ,Axes->Noneэто выглядит так:

введите описание изображения здесь

Если вы не заботитесь о границе, вы можете использовать это: (95 байт)

r=RGBColor;BarChart[{1,1},ChartStyle->{r@"#0055a4",r@"#ef4135"},BarSpacing->1,AspectRatio->2/3,Axes->None]

Выглядит так:

введите описание изображения здесь

Без осей:

введите описание изображения здесь


3
Axes->None, Вы должны также указать AspectRatio->2/3. Переименование RGBColorпросто: r=RGBColor;...r["..."]. Вы также можете использовать префиксную нотацию, чтобы сохранить еще два байта r@"#0055a4".
Мартин Эндер

Если вам не нужен план, попробуйте BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Красный выглядит достаточно близко.
DavidC

@DavidCarraher Meh, поскольку в вопросе указывается конкретное значение RGB, это значение должно использоваться точно.
Мартин Эндер,

Моей главной рекомендацией было нарисовать два прямоугольника, а не три. Однако вы технически правы насчет красного.
DavidC

Разве границы вокруг баров не лишают законной силы это решение?
LegionMammal978

11

Javascript (ES6) 117 байт

Рисует это в консоли

for(i=c=s=[];i<156;c[i++]=`color:${[,'blue','#fff'][i%3]||(s+=`
`,'red')}`)s+='%c'+'+'.repeat(26);console.log(s,...c)


2
Для 'white'Я думаю , что короче делать: #fff. Кроме того, красный и синий цвета должны соответствовать цветам, указанным в спецификации
Downgoat

1
Вы можете сохранить несколько байтов i=c=s=[]вместо i=0,c=[],s=''того, чтобы обновлять цвета, которые могут немного помочь ...
Дом Гастингс

1
@ Vɪʜᴀɴ При выводе в тексте вы можете использовать стандартные цвета ( redи blue). Это вторая точка, считая снизу. Это в пределах спецификации.
Исмаэль Мигель

@DomHastings Хороший совет, умное использование принуждения. Спасибо!
Джордж Райт

1
@sysreq Текст в консоли ... Я не контролирую высоту вашей консоли. Это 78 символов в ширину 52 в высоту.
Джордж Райт

10

pb , 68 байт

cw[Y!52]{cccw[X!26]{b[77]>}ccccw[X!52]{b[77]>}cw[X!78]{b[77]>}<[X]v}

Ничего себе, вызов, который ПБ на самом деле хорошо подходит для! Это немного и далеко друг от друга.

Когда я писал спецификацию для pb, я включал цветной вывод в основном в шутку. Язык был назван в честь «кисти», почему бы не сделать цвет? Помимо примеров программ, это второй раз, когда я использовал его. Это реализовано с кодами ANSI, как требует вопрос.

Я использовал «М» в качестве символа для вывода, потому что он довольно плотный.

Выход:

Я изменил размер скриншота по вертикали, чтобы он составлял две трети его высоты, потому что буквы не квадратные. Вывод 78 на 52, но оригинальный скриншот выглядит действительно неправильно.

С комментариями и отступами и барахлом:

c               # Increase output colour by 1
                # 0 (White) -> 1 (Red)
                # Loop ends with output colour == 1, this is cheaper than
                # setting it back to white every time.

w[Y!52]{        # While the brush's Y coordinate is not 52:
    ccc           # Increase output colour by 3
                    # 1 (Red) -> 4 (Blue)

    w[X!26]{      # While the brush's X coordinate is not 26:
        b[77]       # Write 'M' at the brush's coordinates
        >           # Increase X coordinate by 1
    }             

    cccc          # Increase output colour by 4
                    # 4 (Blue) -> 8 mod 8 = 0 (White)

    w[X!52]{      # While the brush's X coordinate is not 52:
        b[77]       # (same as before)
        >         
    }             

    c             # Increase output colour by 1
                    # 0 (White) -> 1 (Red)

    w[X!78]{      # While the brush's X coordinate is not 78:
        b[77]       # (same as before)
        >
    }

    <[X]          # Set X back to 0
    v             # Increase Y by 1
}

78x30 даст вам размеры, которые вы хотите для вывода терминала.
Mego

@Mego Да, но я не уверен, разрешено ли это.
подземный

Результирующий вывод на xterm шрифтом по умолчанию соответствует указанным размерам.
Mego

Хотя я чувствую себя странно, измеряя размер вывода на консоль в любом другом месте, кроме «символов».
подземный

1
Когда ваши персонажи в 1,2 раза выше и шире, они не дают очень хороших пикселей.
Mego

10

C, 115 байтов

введите описание изображения здесь

#define c"[48;2;%d;%d;%dm%9c"
d=255;main(a){while(a++<9)printf(c c c c,0,85,164,0,d,d,d,0,239,65,53,0,0,0,0,10);}

Содержит непечатные материалы:

00000000: 2364 6566 696e 6520 6322 1b5b 3438 3b32  #define c".[48;2
00000010: 3b25 643b 2564 3b25 646d 2539 6322 0a64  ;%d;%d;%dm%9c".d
00000020: 3d32 3535 3b6d 6169 6e28 6129 7b77 6869  =255;main(a){whi
00000030: 6c65 2861 2b2b 3c39 2970 7269 6e74 6628  le(a++<9)printf(
00000040: 6320 6320 6320 632c 302c 3835 2c31 3634  c c c c,0,85,164
00000050: 2c30 2c64 2c64 2c64 2c30 2c32 3339 2c36  ,0,d,d,d,0,239,6
00000060: 352c 3533 2c30 2c30 2c30 2c30 2c31 3029  5,53,0,0,0,0,10)
00000070: 3b7d 0a                                  ;}.

Чтобы эта программа работала, нужно сделать пару вещей:

  • Терминал поддерживает ESC [48;2;<r>;<g>;<b>mescape-последовательность «truecolor».
  • Терминал не является xterm, потому что реализация вышеупомянутого xterm будет давать немного неправильные цвета.
  • Терминал полностью игнорирует NUL-символы.

Это также выглядит лучше, если фон вашего терминала черный.

Чтобы изменить высоту флага, передайте аргументы командной строки программе. Для каждого переданного аргумента флаг становится на одну строку короче. Это не ошибка, это особенность!

Выход:

введите описание изображения здесь


Возникли проблемы при компиляции gcc(версия 5.1.1). Какие-либо конкретные флаги, необходимые для компиляции? «ac: 1: 10: предупреждение: ISO C99 требует пробела после имени макроса #define c» \ x1b [48; 2;% d;% d;% dm »
Стив

1
@ Стив, это предупреждение о нашей ошибке?
Functino

1
@Steve Только что снова проверил, gcc 5.2.1. Нет флагов. Выдал 12 предупреждений, но сделал рабочий бинарный файл.
Functino

извинения - работает отлично - были сбиты с толку предупреждениями (и тем фактом, что код выглядит довольно загадочным для новичка в C, такого как я)
Стив

9

MATLAB, 82 79 78 байт

x=[0 1 1 0];y(3:4)=2;fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)

Вывод выглядит так:


1
Какая версия MATLAB? Не работает на r2013a, так как цвета должны быть десятичными числами в диапазоне [0,1].
Том Карпентер

1
Следующая строка работает fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)и экономит 2 байта. :) Я бы также использовал точки с запятой вместо новых строк, чтобы избежать распечатки лишних вещей.
Том Карпентер

1
@TomCarpenter Я расположился на шкале 0-1, прошло немного времени, так как я должен был указать цвета. Что касается точки с запятой / новой строки, я выбирал удобочитаемость, а не консольную запись, но я изменил свой ответ
costrom

9

Visual Basic + Excel, 618 137 байт

Просто любопытно посмотреть, как это можно сыграть в гольф.

РЕДАКТИРОВАТЬ: Любопытство насыщено, благодаря @Neil и @JimmyJazzx, 618 байтов упал прямо до 137 байтов

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

Флаг Excel


1
Запись макроса приводит к ужасно неэффективному коду. Попробуйте, Range("A1:C13").Interior.ColorIndex = 5и, Range("G1:I13").Interior.ColorIndex = 3кажется, достаточно.
Нил

2
Извините, это был Excel 2003, и я забыл включить ActiveWorkbook.Colorsдля указания точных значений RGB. В Excel 2007 есть дополнительные параметры цвета, но я их не знаю случайно.
Нил

1
Я получаю 137 байтов с несколькими быстрыми изменениями. Я думаю, что вы можете сократить это больше, но это легкие изменения. 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
JimmyJazzx

Я получаю 135 с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
Джои

9

CSS, 102 110 111 114 байт

*{background:linear-gradient(90deg,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat


1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- на один байт короче
user2428118

1
на самом деле одного * достаточно :) Спасибо!
Томас Эшеманн

1
+1; Вы можете сохранить другой байт, удалив завершающий символ }.
insertusername здесь

1
Вы можете удалить первый цвет, вы сохраните 8 байтов.
Аваши

Вы можете заменить последний 66%на 0.
Mr_Green


8

iKe , 43 байта

,(0 0;"|"\"#0055A4|#FFF|#EF4135";52#,&3#26)

Это пример программы iKe «сырой кортеж» - это просто описание origin ( 0 0), palette ( 3 7#"#0055A4#FFFFFF#EF4135") и растрового изображения ( +52#'&3#26). Вам нужно обернуть подобное описание в функцию или использовать ссылки на представления, если вы хотите анимировать его.

Палитра - очень простой способ создания серии CSS-цветов, шестнадцатеричных эквивалентов спецификации.

  3 7#"#0055A4#FFFFFF#EF4135"
("#0055A4"
 "#FFFFFF"
 "#EF4135")

Если бы требования к цвету были менее строгими, мы могли бы использовать одну из встроенных палитр iKe и сохранить значительное количество символов:

windows@7 0 4

флаг

Попробуйте это в вашем браузере .

Редактировать:

Сохраненный один байт, используя короткий #FFFцвет CSS для белой полосы:

,(0 0;3 7#"#0055A4#FFFFFF#EF4135";+52#'&3#26)
,(0 0;"|"\"#0055A4|#FFF|#EF4135";+52#'&3#26)

Если кому-то еще интересно играть с iKe, есть руководство по репозиторию на github . Вот еще одна проблема, которую я решил с помощью iKe.

Изменить 2:

Сохраненный один байт с более простым способом создания растрового изображения:

+52#'&3#26
52#,&3#26

На мой вопрос в ОП не ответили, но для записи, если допускаются более гибкие требования к цвету, эта программа будет использовать 30 байт с использованием палитры Windows 3.1:

,(0 0;windows@7 0 4;52#,&3#26)

flag2

После публикации этой проблемы в iKe появилась функция, которая автоматически центрирует текстуры, нарисованные без позиции, что может сохранить еще 3 байта, но это будет противоречить правилам:

,(;windows@7 0 4;52#,&3#26)


7

Обработка, 100 байт

size(78,52);background(255);noStroke();fill(#0055A4);rect(0,0,26,52);fill(#EF4135);rect(52,0,26,52);

Отображает это: Франция

(Наивное решение короче моего первого.)


Я думаю, что команды рисования Processing могут выйти впереди нажатия на пиксель здесь:size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
JohnE

@JohnE Лол, да, я только что заметил это.
геокавель

@JohnE Даже мое супер базовое решение короче вашего!
геокавель

ха-ха, похоже, мы оба это слишком
усложнили

как насчет злоупотребления инструкциями по шкале? Это работает на sketchpad.cc, но может прерваться при обработке 3:size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
JohnE


7

PHP, 70 байт

0000000: 424d 0000 0000 0000 0000 2300 0000 0c00  BM........#.....
0000010: 0000 2001 c000 0100 0800 a455 00ff ffff  .. ........U....
0000020: 3541 ef3c 3f66 6f72 283b 3665 343e 2469  5A.<?for(;6e4>$i
0000030: 3b29 6563 686f 2063 6872 2824 692b 2b2f  ;)echo chr($i++/
0000040: 3936 2533 293b                           96%3);

Выше это hexdump, который может быть изменен с xxd -r. Кроме того, он также может быть создан с помощью следующего сценария PHP:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Я предполагаю настройки по умолчанию, так как они не имеют INI (вы можете отключить ваш локальный INI с помощью -nопции). Создает изображение .bmp (288 x 192), которое должно быть передано в файл. Это настолько большой, насколько я могу сделать это без влияния на количество байтов.


Образец использования

$ xxd -r in.hex > france.php
$ php -n france.php > out.bmp
$ out.bmp

Выход

Французский флаг


Эти цвета выглядят неправильно. Используют ли они значения RGB, указанные в вопросе?
Дверная ручка

@ Doorknob Они делают. Начиная с байта 26, определяется трехцветная цветовая палитра (бгр): A45500, FFFFFF, 3541EF.
Примо

6

ShaderToy (GLSL), 147 байт

void mainImage(out vec4 o,vec2 i){float x=i.x/iResolution.x*3.0;vec3 w=vec3(255,255,255);o=vec4((x<1.0?vec3(0,85,164):x<2.0?w:vec3(239,65,53))/w,1);}

Смотрите это здесь

Не особенно захватывающе. Я уверен, что есть способы играть в гольф больше; Я возьму трещину, когда вернусь домой.


3
Ссылка перенаправляет на shadertoy.com/error : /
Квентин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.