Намалюйте державний прапор Франції


106

Там було багато проблем , іншого прапора Відправлених , але не один для національного прапора з Франції . Цей тиждень здається відповідним часом.

Створіть цей прапор у кількох можливих байтах:

Французький прапор

  • Зображення має бути у співвідношенні 3: 2, розмір не менше 78 пікселів та висота 52 пікселів.
  • Кожна смуга займає третину ширини.
  • Смугові кольору зліва направо RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • Зображення можна зберегти у файл або передати в режимі STDOUT у будь-якому загальному форматі файлу зображення, або його можна відобразити.
  • Крім того, виведіть блок тексту, щонайменше, 78 символів, шириною з символів без пробілів, який зображує прапор, використовуючи кольори ANSI для його забарвлення. (Використовуйте стандартні синій, білий та червоний.)
  • Вбудовані зображення прапор / бібліотеки заборонені.

Виграє найкоротший код у байтах.

Таблиця лідерів

Фрагмент стека внизу цієї публікації генерує таблицю лідерів з відповідей а) як список найкоротших варіантів для кожної мови та б) як загальну таблицю лідерів.

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

## 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 🇫🇷не досить великий
Цифрова травма

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*

Вищенаведене - це шістнадцятковий тиск, з яким можна повернути назад 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 9 pt (шрифт за замовчуванням для xterm) дали найбільш близький до 3: 2.
Mego

Ви можете використати повний блок для "вродливості"
Метью Ро Ро

75

Pure Bash (на 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 Ви маєте рацію, звичайно, - ні рішення не роблять - тому ця відповідь може переступити рядок. Я попросив ОП роз'яснити
Digital Trauma

3
Це просто Unicode.
підземниймонорельс

1
@steve Я не дуже сподівався, що ця відповідь стане такою популярною, особливо зважаючи на те, що є питання щодо її дійсності . Чи можете ви дати так чи ні, чи вважаєте ви це дійсним? Дякую!
Цифрова травма

51

Десмос, 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

Містить недруковані матеріали - ось шестнадцятковий (з оборотом 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

Для друку кольорових символів для STDOUT використовуються ANSI-коди втечі - я вибрав "F" для Франції. Немає онлайн-посилання, оскільки ideone не підтримує коди виходу ANSI у виході.

Дякуємо Деннісу та xnor за чудові поради.

Знімок екрана з 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 байт завдяки @insertusernameтут

Заощаджує 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>
Вставтекористувач

1
@insertusernamehere Спасибі, що врятували 27 байт! Мені вдалося продовжити гольф до
дивних

3
Для мене fill=#0055a4 />теж працює (ні "), зберігаючи цілий байт.
Санчіз

3
@sanchises цілий байт? o_O wow : D
розробникbmw

4
@developerbmw Насправді, було б вражаючим зекономити півбайта, коли задумаєшся.
Санчіз

29

Brainfuck $ , 153 байт

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

Виводить зображення за допомогою ANSI-кодів кольорів. Я вибрав висоту 30, як Мего .

Довідкова реалізація з 2009 року, пов’язана на сторінці esolangs, пропала. Ви можете запустити його за допомогою цього інтерпретатора, зробленого мною, який підтримує все зі сторінки esolangs.

Brainfuck, 258 байт

Це в основному те саме, але просто в простому старому Brainfuck.

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

Або, якщо ви віддаєте перевагу цьому в OOo КОД (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.)
Doorknob

Ви можете використовувати -scaleзамість -sample; Крім того, зворотний
нахил

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}

Це друкує наступне зображення розміром 12 см * 8 см на сторінці A4:

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

Зауважте, що "Сторінка 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
зайти

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}
вхід

24

Піт, 27 байт

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

Існує кілька недрукованих символів, тож ось шістнадцятковий набір:

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" ніде немає?
rev

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
@insertusernameтудь ви мали рацію. Була помилка і на 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 байти коротше без перших 2 рядків, але за замовчуванням матимуть осі і не виглядатиме так добре.

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

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

Якщо затінення недійсне для виклику, повідомте мене!

Без перших 2 рядків це виглядає приблизно так:

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


Я б також включив версію без перших трьох рядків просто як порівняння.
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

Я знаю. Не насторожився досить. Зробимо це зараз.
Gyan

Чи працює #fff?
ev3commander

Ні. Але я можу пропустити f в f.png
Gyan

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-елементом.

Правки

  • Збережено 16 байт , видаливши display:block;і деякі ;.
  • Збережено 1 байт , вилучено остаточний }.

6
Хоча технічно CSS не є мовою програмування за нашими визначеннями.
Conor O'Brien

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Я знаю - просто хотів бити SVG .
Вставтекористування тут

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-state. Завдяки Дендробіуму .
  • Збережено 2 байти , перетворивши приріст у декремент. Завдяки Shaun H .
  • Збережено 3 байти , замінивши fillStyle=["#0055a4","#ef4135"][i]на i?"#ef4135":"#0055a4".

3
2*i*26може стати 52*i, ні?
Conor O'Brien

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Звичайно, може. Дякую. Це далеко поза моїм ліжком.
Вставтекористувач

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]
Dendrobium

2
зберегти байт: x=(d=document).body.appendChild(d.createElementcanvas ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Це добре. Дуже дякую.
вставтекористувач

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 на всьому прапорі.
Фаталізувати

Співвідношення можна налаштувати вручну, змінивши розмір вікна графіки.
флодель

3
Щоб отримати право, ваш запис повинен працювати "поза коробкою". Крім того, кожен може опублікувати 6-піксельне рішення і сказати "Ви можете вручну збільшити масштаб".
Санчіз

4
Ви кажете "оси", я кажу "прапор".

2
@sanchises: Я французький, і я кажу, що це ** k. ЛІБЕРТЕ!
flodel

12

Бліц 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

Математика, 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. Також червоний і синій кольори повинні відповідати кольорам, визначеним у специфікації
Пуховик

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

1
@ Vɪʜᴀɴ Під час виведення тексту можна використовувати стандартні кольори ( redі blue). Це 2-й пункт, рахуючи знизу. Це в межах специфікації.
Ісмаїл Мігель

@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 насправді добрий для! Таких небагато і між ними.

Коли я писав специфікацію для pb, я включив кольоровий вихід переважно як жарт. Мова була названа на честь "пензлика", чому б їй не зробити кольором? Окрім прикладних програм, це вже другий раз, коли я його використовував. Він реалізується за допомогою ANSI-кодів, як цього вимагає питання.

Я використовував "M" як символ для виведення, оскільки він досить щільний.

Вихід:

Я змінив розмір цього екрана по вертикалі на дві третини його висоти, оскільки літери не є квадратними. Вихід становить 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 у шрифті за замовчуванням відповідає заданим розмірам.
Мего

Хоча я почуваюся дивним вимірювати розмір консольного виводу в будь-що, окрім "символів".
підземниймонорельс

1
Коли ваші персонажі мають висоту 1,2x та їх широкі розміри, вони не створюють дуже хороших пікселів.
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>mпослідовність втечі "truecolor".
  • Термінал не xterm, тому що реалізація вищезазначеного xterm виведе трохи неправильні кольори.
  • Термінал повністю ігнорує символи NUL.

Це також виглядає приємніше, якщо фон вашого терміналу чорний.

Щоб змінити висоту прапора, передайте програмі аргументи командного рядка. Для кожного переданого аргументу прапор стає на один рядок коротшим. Це не помилка, це особливість!

Вихід:

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


Не вдалося скопіювати це gcc(версія 5.1.1). Будь-які конкретні прапори, необхідні для складання? "ac: 1: 10: попередження: ISO C99 вимагає пробілу після імені макросу #define c" \ x1b [48; 2;% d;% d;% dm "
steve

1
@Steve це попередження про нашу помилку?
Functino

1
@Steve Просто перевірив її знову, gcc 5.2.1. Ніяких прапорів Виніс 12 попереджень, але зробив робочий бінар.
Functino

вибачення - прекрасно працює - заплутався попередженнями (а також тим, що код виглядає доволі загадковим для новичка С, як я)
Стів

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, минуло небагато часу, оскільки мені довелося вказати кольори. Що стосується крапки з комою /
нової лінії

9

Visual Basic + Excel, 618 137 байт

Просто цікаво подивитися, як це можна пограти в гольф.

EDIT: Цікавість наситилася, завдяки @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
Joey

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; Ви можете зберегти ще один байт, видаливши трейлінг }.
insertusernamehere

1
Ви можете видалити перший колір, заощадите 8 байт.
Awashi

Ви можете замінити останній 66%на 0.
Mr_Green


8

iKe , 43 байти

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

Це приклад програми "iKe" "необроблений кортеж" - це лише опис походження ( 0 0), палітри ( 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)

прапор2

Оскільки ця проблема була розміщена, iKe отримав функцію, яка автоматично центрує текстури, намальовані без позиції, що може зберегти ще 3 байти, але це буде суперечити правилам:

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

7

Октава, 77 76 байт

s(98,49)=0;imshow(cat(3,[s w=s+255 w-18],[s+35 w s+41],[s+149 w s+57])/255);

Відображає зображення:

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


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 Лол, так, я просто це помітив.
geokavel

@JohnE Навіть моє супер базове рішення коротше вашого!
геокавель

haha- схоже, що ми обидва це
ускладнили

як щодо зловживання інструкціями щодо масштабу? Це працює на sketchpad.cc, але може порушитись у Processing 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);

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

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

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


Використання зразка

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

Вихідні дані

Французький прапор


Ці кольори не виглядають правильно. Чи використовують вони значення RGB, зазначені у запитанні?
Дверна ручка

@Doorknob Вони так роблять. Починаючи з байту 26, визначається тризначна палітра кольорів (bgr): 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.