Zeichnen Sie die Nationalflagge von Frankreich

106

Viele andere Flaggen Herausforderungen geschrieben , aber nicht ein für die gibt es Nationalflagge von Frankreich . Diese Woche scheint eine angemessene Zeit zu sein.

Produziere dieses Flag in den wenigsten möglichen Bytes:

französische Flagge

  • Das Bild muss ein Verhältnis von 3: 2 haben und mindestens 78 Pixel breit und 52 Pixel hoch sein.
  • Jeder Streifen nimmt ein Drittel der Breite ein.
  • Die Streifen Farben von links nach rechts sind RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • Das Bild kann in einer Datei gespeichert oder in einem beliebigen gängigen Bilddateiformat an STDOUT weitergeleitet oder angezeigt werden.
  • Alternativ können Sie einen mindestens 78 Zeichen breiten Textblock aus Nicht-Whitespace-Zeichen ausgeben, der das Flag darstellt, und ANSI-Farbcodes verwenden , um es einzufärben. (Verwenden Sie Standard Blau, Weiß und Rot.)
  • Eingebaute Flaggenbilder / Bibliotheken sind nicht erlaubt.

Der kürzeste Code in Bytes gewinnt.

Bestenliste

Das Stapel-Snippet am Ende dieses Beitrags generiert die Rangliste aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamtrangliste.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

## Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

## Perl, 43 + 2 (-p flag) = 45 bytes

Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

Steve
quelle
4
Diese RGB-Werte stimmen nicht mit Ihrem Bild überein. Von dem, was ich sehe, haben Sie RGB bekommen: (0, 35, 149), (255, 255, 255), (237, 41, 57).
Becher
8
Das kompakte Speichern der angegebenen Palette ist wahrscheinlich der schwierigste Teil dieses Problems in den meisten Sprachen. Angesichts dessen erscheint es für grafische Lösungen ziemlich unfair, ANSI-Ausgaben mit einer Standardpalette zuzulassen. Erlauben Sie grafischen Lösungen, reine (0, 0, 255) / (255, 255, 255) / (255, 0 0) zu verwenden, um das Spielfeld auszugleichen.
JohnE
15
Jeder Streifen nimmt ein Drittel der Breite ein. Könnte interessanter sein, die Naval-Variante zu verwenden: Mit einer Verordnung vom 17. Mai 1853 verwendete die Marine wieder die Proportionen 30:33:37, die sie jetzt weiterhin verwendet, da das Flattern der Flagge Teile weiter von der Flagge entfernt Fall scheinen kleiner.
Ben Jackson
34
echo 🇫🇷nicht ganz groß genug
Digitales Trauma
5
@ JohnE Ich stimme zu. Die Regeln für Farben geben den ASCII-art-Lösungen einen enormen Vorteil. Sie machen auch die Herausforderung für Sprachen, die willkürliche Farben verwenden können, nicht "schwieriger" (sie addieren wirklich nur Bytes) und disqualifizieren mehrere coole Sprachen, die keine willkürlichen Farben können.
ein Spaghetto

Antworten:

38

CJam, 23 22 Bytes

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*

Das obige ist ein Hexdump, mit dem umgekehrt werden kann xxd -r.

Auf Kosten von zwei zusätzlichen Bytes - für insgesamt 24 Bytes - können wir stattdessen Hintergrundfarben verwenden, wodurch die Ausgabe etwas hübscher wird.

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*

Wie es funktioniert

In beiden Programmen verwenden wir die ANSI-Escape-Sequenz, \x9bXYmbei der Xes sich 3um die Vordergrund- und 4Hintergrundfarbe handelt, und geben Ydie zu verwendende Farbe an, um zwischen den drei Farben der Flagge zu wechseln.

'<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.

Das andere Programm ist ähnlich.

Ausgabe

Ausgabe

Dennis
quelle
Ich bin mir momentan nicht sicher, wie groß ich das "Bild" machen soll.
Dennis
Ich ging mit 78x30 in meiner Antwort. Diese Dimensionen in Lucida Console 9 pt (die Standardschriftart für xterm) ergaben den nächsten Wert von 3: 2.
Mego
Sie könnten einen vollständigen Block für "Hübschheit" verwenden
Matthew Roh
75

Pure Bash (unter OSX), 84

Das Standard-OSX-Terminal unterstützt Vollfarben-Emojis. Ich bin nicht sicher, ob dies als Text- oder Grafikausgabe gilt.

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

Die Ausgabe sieht folgendermaßen aus:

Bildbeschreibung hier eingeben


Alternative:

Bash mit OSX-Dienstprogrammen, 56

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

Der dcAusdruck:

  • berechnet 3^26-1und druckt es ternär22222222222222222222222222
  • dividiert dies durch 2 und multipliziert dann mit 3^26. Ausgabe ternär ist dies1111111111111111111111111100000000000000000000000000

trübersetzt dann die 210 Zeichen in 🔵⚪️🔴. yesgibt diese Zeile auf unbestimmte Zeit aus. sed 26qUnterbricht die Ausgabe bei 26 Zeilen.

Digitales Trauma
quelle
51
Ein Terminal, das Emojis unterstützt. Beeindruckend.
rr
6
Die erste Lösung verwendet weder die richtigen RGB-Werte noch die Standard-ANSI-Farben, oder?
Türknauf
@Doorknob Sie haben natürlich Recht - keine der beiden Lösungen - und diese Antwort könnte die Grenze überschreiten. Ich habe das OP um Klärung gebeten
Digitales Trauma
3
Es ist nur Unicode.
undergroundmonorail
1
@ Steve Ich hatte nicht wirklich damit gerechnet, dass diese Antwort so populär wird, zumal es Fragen zu ihrer Gültigkeit gibt . Können Sie ein Ja oder Nein geben, ob Sie denken, dass es gültig ist? Vielen Dank!
Digitales Trauma
51

Desmos, 30 12 Bytes

3x>10
3x<-10

Probieren Sie es online aus.

Ich bin mir nicht ganz sicher, ob dies gültig ist. Bitte lassen Sie mich wissen, wenn es irgendwelche Probleme gibt.

ein Spaghetto
quelle
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Die Standardfarben sind Rot und Blau in dieser Reihenfolge (glaube ich), daher müssen sie nicht festgelegt werden.
ein Spaghetto
7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Dann ist es ein Zufallsflaggengenerator;)
DanTheMan
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Sie sind für mich nicht zufällig - wenn ich zwei Ungleichungen manuell eingebe, werde ich durchgehend rot und dann blau.
Mego
1
Das ist merkwürdig. Ich werde auch rot und blau.
Lirtosiast
2
Ich denke nicht, dass es ... noch passt es genau zum Seitenverhältnis.
Türknauf
51

Python 2, 47 Bytes

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

Enthält nicht druckbare Dateien - hier ist ein Hexdump (umkehrbar mit 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

Verwendet ANSI-Escape-Codes, um farbige Zeichen an STDOUT zu drucken. Für Frankreich habe ich "F" gewählt. Keine Online-Verknüpfung, da ideone keine ANSI-Escape-Codes in der Ausgabe unterstützt.

Vielen Dank an Dennis und xnor für einige großartige Tipps.

Screenshot von xterm:

Flagge

Mego
quelle
1
Sie haben dort einen zusätzlichen Platz. in [0]->in[0]
mbomb007
2
1. Sie können anstelle von tatsächliche ESC-Bytes verwenden \x1b. 2. Fettdruck scheint nicht notwendig zu sein. 3. Ich bin mir nicht sicher, ob dies auch für ANSI-Kunst gilt, aber die Frage scheint ein Verhältnis von 3: 2 zu verlangen.
Dennis
Es ist kürzer Unter in den Parametern mit Formatierung: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor
16
Drücke F, um Respekt zu
erweisen
4
Die Figur sieht etwas print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
besser aus
44

HTML / SVG, 76 Bytes 87 88 121 122 149

27 Bytes dank @insertusernamehere eingespart

Spart 9 Bytes dank @Joey

Dank @sanchies 1 Byte gespeichert

Spart dank @Neil 1 Byte

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

Wenn Sie viel HTML-Syntax missbrauchen, kann dies ziemlich kurz werden.


Screenshot der Ausgabe:

Frankreich Flagge Ausgabe


Oder probieren Sie es aus (stellen Sie sicher, dass Ihr Browser SVG unterstützt):

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

Downgoat
quelle
3
Ich habe versucht, Sie mit CSS zu schlagen, und jetzt habe ich Ihr SVG so golfen, dass es noch kleiner ist als meine CSS-Lösung. : D Dies ist die kürzeste Zeit, die ich in Safari, Chrome und Firefox zum Arbeiten <svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
brauche.
1
@insertusernamehere Danke, das hat 27 Bytes gespart! Ich habe es geschafft, dies auf erstaunliche 88 Bytes
herunterzuspielen
3
Funktioniert bei mir fill=#0055a4 />auch (nein ") und spart ein ganzes Byte.
Sanchises
3
@sanchises ein ganzes Byte? o_O wow : D
Developerbmw
4
@developerbmw Eigentlich wäre es beeindruckender, ein halbes Byte zu sparen, wenn Sie darüber nachdenken.
Sanchises
29

Brainfuck $ , 153 Bytes

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

Gibt das Bild mit ANSI-Farbcodes aus. Ich habe eine Größe von 30 wie Mego gewählt .

Die auf der esolangs-Seite verlinkte Referenzimplementierung von 2009 fehlt. Sie können es mit diesem von mir erstellten Interpreter ausführen, der alles von der esolangs-Seite unterstützt.

Brainfuck, 258 Bytes

Das ist im Grunde das Gleiche, nur im alten Brainfuck.

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

Oder, wenn Sie diesen in oOo CODE (984 Bytes) bevorzugen :

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
PurkkaKoodari
quelle
25

Bash + ImageMagick, 60 77 73 Bytes

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

(igitt, +17 Zeichen aufgrund von Farbanforderungen, die ich vorher nicht bemerkt habe ...)

Ausgaben in die Datei aim Netpbm-Format:

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

Kann auch in PNG ausgegeben werden, wenn Sie den Dateinamen in a.png(+4 Zeichen) ändern .

Ausgabe:

Bildbeschreibung hier eingeben

Türknauf
quelle
1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Digitales Trauma
@DigitalTrauma Danke! Das spart 4 Zeichen und beendet sich nicht mit einem Fehler. (Außerdem wusste ich nie, dass ImageMagick von STDIN lesen / schreiben kann.)
Türklinke
Sie können -scaleanstelle von verwenden -sample; Außerdem scheint der Backslash nicht notwendig zu sein
aditsu
25

LaTeX, 139 Bytes

Vielen Dank an @WChargin für die Einsparung von 21 Bytes.

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

Das folgende 12 cm * 8 cm-Bild wird auf einer A4-Seite gedruckt:

Bildbeschreibung hier eingeben

Beachten Sie, dass "Seite 1" auch am unteren Rand der Seite gedruckt wird

Tödlich
quelle
1
Nun, das ist ungefähr 100 Bytes kürzer als meine asymptoteLösung ...
Arcturus
1
s.\newcommand\z[1].\def\z#1eine Reihe von Bytes zu speichern. Sie können aber auch ein paar unter Verwendung abrasieren \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!heißt -Das, Ihre eigenen Trennzeichen anstelle von Klammern für die Gruppierung verwenden
wchargin
1
Sie können auch\input color
wchargin
1
Der Vollständigkeit \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}
halber
24

Pyth, 27 Bytes

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

Es gibt einige nicht druckbare Zeichen, daher hier ein 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

Dadurch wird eine Datei erstellt o.png, die genau 78 Pixel breit und 52 Pixel hoch ist:

Bildbeschreibung hier eingeben

Erläuterung:

.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
Jakube
quelle
1
Für eine Sekunde dachte ich, ich hätte die PNG-Spezifikation grob missverstanden.
Primo
1
save it as an image o.png, aber es gibt nirgendwo ".png"?
rev
1
@AsidShout Wie rufst du das Programm auf? Wenn Sie es verwenden python3 pyth.py code.pyth, finden Sie es im selben Verzeichnis.
Jakube
20

HTML (Mackenmodus), 68 Bytes

Dies verwendet den Macken-Modus, um das Flag zu rendern.

Der HTML- Code ist SEHR ungültig, funktioniert jedoch mit einem Standardbrowser für Android 4.4.2 und Firefox 42.0 (unter Windows 7 x64).

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

Die Flagge wird mit der richtigen Größe und den Standardfarben Rot und Blau gerendert. Alle Webseiten beginnen mit einem weißen Standardhintergrund.



Als Alternative:

Eine perfekt gültige HTML5-Version (141 Bytes):

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

Überprüfen Sie die Gültigkeit auf: https://html5.validator.nu/

Druckbild des Ergebnisses:

Validierungsergebnis

Ismael Miguel
quelle
1
Bist du sicher? Wenn ich eine HTML-Datei mit nur dieser Zeile habe, funktioniert dies in Firefox, Chrome und Safari nicht. Wenn die Datei nach dieser Zeile andere HTML-Elemente enthält, funktioniert es für mich. Vielleicht können Sie das nachfolgende nicht verwerfen >?
insertusernamehere
1
"Völlig gültig"? Es sollte sein, style="..."ob Sie das im zweiten Beispiel wollen.
mbomb007
3
@ mbomb007 Ich möchte den kleinsten gültigen HTML-Code erstellen. Es validiert mit dem offiziellen Validator, es ist also perfekt gültiges HTML. Sie können es selbst versuchen, wenn Sie nicht glauben.
Ismael Miguel
1
@ mbomb007 Auch fehlende Anführungszeichen sind das kleinste Problem: Es gibt kein <html>, kein <head>, kein <body>, kein </tr>, kein </td>und kein Schließen aller fehlenden Tags.
Ismael Miguel
1
@insertusernamehere Du hattest recht. Es war auch ein Problem mit Android. Ich habe es auf jsfiddle getestet. Aber beim Zugriff data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>funktionierte es nicht. Korrigierte es jetzt und benutze den Link, um es zu testen.
Ismael Miguel
17

TI-Basic, 52 44 42 Bytes

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

(nimmt einen standardmäßigen [-10,10,1] mal [-10,10,1] Grafikbereich an)

Wäre 4 Bytes kürzer ohne die ersten 2 Zeilen, hätte aber standardmäßig Achsen und würde nicht so schön aussehen.

Sieht aus wie das:

Bildbeschreibung hier eingeben

Wenn die Schattierung für die Herausforderung ungültig ist, lassen Sie es mich wissen!

Ohne die ersten beiden Zeilen sieht es so aus:

Bildbeschreibung hier eingeben

DanTheMan
quelle
Zum Vergleich würde ich auch die Version ohne die ersten drei Zeilen einfügen.
GamrCorps
1
Ich denke, Sie können einfach von Ymin zu Ymax gehen. Sie können auch einen Standardbildschirm von -10 bis 10 annehmen. Ich bin mir auch nicht sicher, ob dies gültig ist, da der rote und der blaue Bereich nur zur Hälfte schattiert sind.
Lirtosiast
@ThomasKwa Ich habe meinen Beitrag bearbeitet, um zu zeigen, warum ich nicht nur Ymin und Ymax verwendet habe. Ich wusste nicht, dass ich einen Standardbildschirm annehmen könnte, aber Sie wissen nicht genau, was dieser Standardbildschirm ist. Kannst du das bitte klären? Was das "Halbschattierte" betrifft, so schattiert TI-Basic die Dinge. Wenn es ungültig ist, werde ich es umgehend ändern.
DanTheMan
1
Ein Standardbildschirm ist Ymin = Xmin = -10, Ymax = Xmax = 10. Der Rechner startet mit diesen Fenstereinstellungen und AxesOn usw., sodass Sie sie übernehmen können.
Lirtosiast
1
@Doorknob Soweit ich weiß, ist es unmöglich, dies zu tun, ohne auf Hexerei zurückzugreifen.
DanTheMan
17

ffmpeg, 110 113 116 117 119 108 100 Bytes

Zeigen Sie mit ffplay 100 Bytes an:

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

In Datei gespeichert, mit ffmpeg, 108 Bytes:

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

Die aktuelle Version des Befehls wird mit einem Fehler abgebrochen, ABER es wird ein einzelnes Bild ".png" ausgegeben, wie unten gezeigt.

Bildbeschreibung hier eingeben

Gyan
quelle
8
Beeindruckend. Ffmpeg missbraucht, um Bilder zu machen ...
Cole Johnson
He, ich habe diese Frage gesehen und daran gedacht, dasselbe zu tun. Gute Arbeit, um es kompakt zu machen. Wenn es erlaubt ist, können Sie es etwas kleiner machen, indem Sie whiteanstelle von #ffffff: die Werte sollten gleich sein.
Logan
Ich weiß. War nicht gestört genug. Werde es jetzt tun
Gyan
Funktioniert #fff?
ev3commander
Nein, aber ich kann das f in f.png
Gyan
16

CSS, 127 128 144 Bytes

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

Kein weiteres Tag erforderlich, arbeitet ausschließlich mit dem body-Element.

Bearbeitungen

  • 16 Bytes durch Entfernen display:block;und einige gespart; .
  • 1 Byte gespeichert , das Trailing entfernt }.
insertusernamehere
quelle
6
Obwohl CSS technisch gesehen keine Programmiersprache ist.
Conor O'Brien
10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ich weiß - wollte nur SVG schlagen .
insertusernamehere
4
@ CᴏɴᴏʀO'Bʀɪᴇɴ ist richtig, das ist keine gültige Antwort.
Mego
2
@ CᴏɴᴏʀO'Bʀɪᴇɴ Es wurde die CSS als SASS-Datei gespeichert, da SASS eine Skriptsprache ist. Wäre dies eine gültige Antwort?
fcalderan
6
Ja, reguläres CSS ist eine gültige SASS-Datei.
ev3commander
16

JavaScript, 140 143 147 151 153 Bytes

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


Bearbeitungen

  • Gespeicherte 2 Bytes durch den Austausch 2*i*26mit i*52. Vielen Dank an Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Gespeichert 4 Bytes durch die Refactoring for-loop. Dank ETHproductions .
  • Gespeichert 2 Bytes durch die Verwendung von with-Anweisung. Dank an Dendrobium .
  • 2 Bytes gespart, indem das Inkrement in ein Dekrement umgewandelt wurde. Dank Shaun H .
  • Gespeichert 3 Bytes durch den Austausch fillStyle=["#0055a4","#ef4135"][i]mit i?"#ef4135":"#0055a4".
insertusernamehere
quelle
3
2*i*26kann werden 52*i, nein?
Conor O'Brien
7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Natürlich kann es. Vielen Dank. Es ist weit jenseits meiner Schlafenszeit.
insertusernamehere
2
Sie können 2 Bytes mit der folgenden withAnweisung abschneiden :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
Speichern Sie ein Byte: x=(d=document).body.appendChild(d.createElementLeinwand ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H
2
@ Dendrobium Das ist gut. Danke vielmals.
Insertusernamehere
13

R, 59 Bytes

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

Die Ausgabe wird angezeigt:

Bildbeschreibung hier eingeben

Mit kann man auch 49 Bytes machen

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

Wenn Ihnen die Achsen und Grenzen nichts ausmachen:

Bildbeschreibung hier eingeben

Flodel
quelle
2
Das Verhältnis scheint falsch. Ich denke, Sie haben ein Verhältnis von 2: 3 auf einem einfarbigen Rechteck anstelle eines Verhältnisses von 3: 2 auf der gesamten Flagge.
Fatalize 18.11.15
Das Verhältnis kann manuell angepasst werden, indem die Größe des Zeichnungsfensters geändert wird.
Flodel
3
Um sich zu qualifizieren, sollte Ihr Eintrag "out of the box" funktionieren. Andernfalls kann jeder eine 6-Pixel-Lösung posten und "Sie können manuell zoomen" sagen.
Sanchises
4
Sie sagen "Achsen", ich sage "Fahnenstange".
2
@sanchises: Ich bin Französin und ich sage f ** k it. LIBERTE!
Flodel
12

Blitz 2D / 3D , 154 108 Bytes

Dies entspricht genau dem in der Frage angegebenen Beispiel (mit Ausnahme des Anti-Aliasing an den Kanten, an denen sich Farben treffen).

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

Die Ausgabe wird angezeigt und sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

El'endia Starman
quelle
12

Mathematica, 63 94 103 Bytes

Als ich diese Herausforderung zum ersten Mal sah, dachte ich Sweet! Dann bist du in Mathematica genau richtig! bis ich bemerkte, dass eingebaute Geräte verboten waren: '(

Aber warte! Ich kann Balkendiagramme verwenden!

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

(Danke an Martin Büttner für das Abschneiden von 5 Bytes, aber das Hinzufügen von 16 Bytes)

Sieht aus wie das:

Bildbeschreibung hier eingeben

Wenn Sie hinzufügen ,Axes->None, sieht es so aus:

Bildbeschreibung hier eingeben

Wenn Sie sich nicht für den Rand interessieren, können Sie dies verwenden: (95 Bytes)

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

Sieht aus wie das:

Bildbeschreibung hier eingeben

Ohne Äxte:

Bildbeschreibung hier eingeben

DanTheMan
quelle
3
Axes->None. Sie sollten auch specifty AspectRatio->2/3. Umbenennungs RGBColorist einfach: r=RGBColor;...r["..."]. Sie können auch die Präfixnotation verwenden, um zwei weitere Bytes zu speichern r@"#0055a4".
Martin Ender
Wenn Sie die Gliederung nicht benötigen, versuchen Sie es BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Der Rote sieht nah genug aus.
DavidC
@DavidCarraher Meh, da die Frage einen bestimmten RGB-Wert angibt, sollte dieser genau verwendet werden.
Martin Ender
Meine Hauptempfehlung war, zwei Rechtecke zu zeichnen, nicht drei. Sie sind jedoch technisch korrekt in Bezug auf Rot.
DavidC
Würden die Ränder um die Balken diese Lösung nicht ungültig machen?
LegionMammal978
11

Javascript (ES6) 117 Bytes

Zeichnet es in die Konsole

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

George Reith
quelle
2
Für 'white'ich denke , es ist kürzer zu tun: #fff. Außerdem müssen die Farben Rot und Blau mit den in der Spezifikation angegebenen Farben übereinstimmen
Downgoat 18.11.15
1
Sie können ein paar Bytes mit speichern, i=c=s=[]anstatt i=0,c=[],s=''nach der Aktualisierung der Farben, die ein wenig helfen könnten ...
Dom Hastings
1
@ Vɪʜᴀɴ Bei der Textausgabe können Sie die Standardfarben ( redund blue) verwenden. Es ist der 2. Punkt, von unten gezählt. Dies liegt innerhalb der Spezifikation.
Ismael Miguel
@DomHastings Netter Tipp, kluger Einsatz von Zwang. Vielen Dank!
George Reith
1
@sysreq Sein Text in der Konsole ... Ich habe keine Kontrolle über die Zeilenhöhe Ihrer Konsole. Es ist 78 Zeichen breit, 52 groß.
George Reith
10

pb , 68 bytes

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

Wow, eine Herausforderung, für die pb eigentlich gut ist! Das sind wenige und weit voneinander entfernt.

Als ich die Spezifikation für pb schrieb, habe ich die Farbausgabe hauptsächlich als Scherz aufgenommen. Die Sprache wurde nach einem "Pinsel" benannt, warum sollte es nicht Farbe tun? Abgesehen von Beispielprogrammen habe ich es zum zweiten Mal verwendet. Es wird mit ANSI-Codes implementiert, wie es die Frage erfordert.

Ich habe 'M' als Zeichen für die Ausgabe verwendet, da es ziemlich dicht ist.

Ausgabe:

Ich habe den Screenshot vertikal auf zwei Drittel seiner Höhe angepasst, da die Buchstaben nicht quadratisch sind. Die Ausgabe ist 78 mal 52, aber der ursprüngliche Screenshot sieht wirklich falsch aus.

Mit Kommentaren und Einrückungen und Junk:

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
}
untergrundbahn
quelle
Mit 78x30 erhalten Sie die gewünschten Abmessungen für die Terminalausgabe.
Mego
@Mego Ja, aber ich bin mir nicht sicher, ob es erlaubt ist.
Undergroundmonorail
Die resultierende Ausgabe auf xterm in der Standardschriftart entspricht den angegebenen Abmessungen.
Mego
Ich würde mich komisch fühlen, wenn ich die Größe der Konsolenausgabe in etwas anderem als "Zeichen" messen würde.
Undergroundmonorail
1
Wenn Ihre Zeichen 1,2x so groß wie breit sind, ergeben sie keine sehr guten Pixel.
Mego
10

C 115 Bytes

Bildbeschreibung hier eingeben

#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);}

Enthält nicht druckbare Dateien:

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                                  ;}.

Damit dieses Programm funktioniert, müssen einige Dinge zutreffen:

  • Das Terminal unterstützt die ESC [48;2;<r>;<g>;<b>mEscape-Sequenz "truecolor".
  • Das Terminal ist nicht xterm, da die Implementierung von xterm zu leicht falschen Farben führt.
  • Das Terminal ignoriert NUL-Zeichen vollständig.

Es sieht auch besser aus, wenn der Hintergrund Ihres Terminals schwarz ist.

Übergeben Sie Befehlszeilenargumente an das Programm, um die Höhe des Flags zu ändern. Für jedes übergebene Argument wird das Flag eine Zeile kürzer. Es ist kein Fehler, es ist ein Feature!

Ausgabe:

Bildbeschreibung hier eingeben

Funktino
quelle
Probleme beim Kompilieren mit gcc(Version 5.1.1). Benötigen Sie zum Kompilieren bestimmte Flags? "ac: 1: 10: Warnung: ISO C99 erfordert Leerzeichen nach dem Makronamen define c" \ x1b [48; 2;% d;% d;% dm“
steve
1
@Steve ist das eine Warnung unser ein Fehler?
Functino
1
@Steve Habe es gerade nochmal getestet, gcc 5.2.1. Keine Flaggen. Erzeugte 12 Warnungen, machte aber eine funktionierende Binärdatei.
Functino
Entschuldigung - funktioniert gut - wurde durch die Warnungen verwirrt (und die Tatsache, dass der Code für einen C-Neuling wie mich ziemlich kryptisch aussieht)
Steve
9

MATLAB, 82 79 78 Bytes

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)

Die Ausgabe sieht folgendermaßen aus:

costrom
quelle
1
Welche Version von MATLAB? Funktioniert nicht auf r2013a, da Farben Dezimalzahlen im Bereich [0,1] sein müssen.
Tom Carpenter
1
Die folgende Zeile funktioniert fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)und spart Ihnen 2 Bytes. :) Ich würde auch Semikolons anstelle von Zeilenumbrüchen verwenden, um zu vermeiden, dass zusätzliches Material ausgedruckt wird.
Tom Carpenter
1
@TomCarpenter Ich habe auf der 0-1-Farbskala einen Abstand gewählt. Es ist schon eine Weile her, seit ich Farben festlegen musste. Bei den Semikolons / Zeilenumbrüchen habe ich die Lesbarkeit der Konsolenschrift vorgezogen, aber meine Antwort wurde geändert
zwar ab dem
9

Visual Basic + Excel, 618 137 Bytes

Ich bin nur neugierig, wie das gespielt werden kann.

BEARBEITEN: Dank @Neil und @JimmyJazzx sank die Neugier auf 137 Bytes

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-Flag

Steve
quelle
1
Das Aufzeichnen eines Makros führt zu furchtbar ineffizientem Code. Versuchen Range("A1:C13").Interior.ColorIndex = 5und Range("G1:I13").Interior.ColorIndex = 3was scheint zu genügen.
Neil
2
Entschuldigung, das war Excel 2003, und ich habe vergessen, das ActiveWorkbook.Colorsanzugeben, um die genauen RGB-Werte anzugeben. Excel 2007 bietet zusätzliche Farboptionen, die ich jedoch nicht sofort kenne.
Neil
1
Ich bekomme 137 Bytes mit ein paar schnellen Änderungen. Ich denke, Sie können dies weiter reduzieren, aber dies sind die einfachen Änderungen. 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
Ich bekomme 135 mitSub 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 Bytes

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

Thomas Eschemann
quelle
1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- ein Byte kürzer
user2428118
1
eigentlich reicht ein einziges * :) Danke!
Thomas Eschemann
1
+1; Sie können ein weiteres Byte speichern, indem Sie das nachfolgende entfernen }.
Insertusernamehere
1
Sie können die erste Farbe löschen, Sie sparen 8 Bytes.
Awashi
Sie können zuletzt 66%durch ersetzen 0.
Mr_Green
8

Dyalog APL ( 47 44)

⎕SM←↑1 21 41{(''⍴⍨2/20)1⍺,⍵,⍨4↑0}¨2*8 11 10

Ergebnis:

Flagge

Marinus
quelle
2
können Sie tun 2*8 11 10?
Lirtosiast
1
@ThomasKwa: Dank
marinus
8

iKe , 43 Bytes

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

Dies ist ein Beispiel für ein "rohes Tupel" iKe-Programm - es ist nur eine Beschreibung eines Ursprungs ( 0 0), einer Palette ( 3 7#"#0055A4#FFFFFF#EF4135") und einer Bitmap ( +52#'&3#26). Sie müssen eine Beschreibung wie diese in eine Funktion einschließen oder Verweise auf Ansichten verwenden, wenn Sie sie animieren möchten.

Die Palette ist eine sehr einfache Methode zum Erstellen einer Reihe von CSS-Farben, hexadezimale Entsprechungen der Spezifikation.

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

Wenn die Farbanforderungen weniger streng wären, könnten wir eine der integrierten iKe-Paletten verwenden und eine beträchtliche Anzahl von Zeichen speichern:

windows@7 0 4

Flagge

Versuchen Sie es in Ihrem Browser .

Bearbeiten:

Ein Byte wurde mit einer kurzen #FFFCSS-Farbe für den weißen Streifen gespeichert :

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

Wenn jemand anderes daran interessiert ist, mit iKe zu spielen, gibt es ein Handbuch zum Github-Repo . Hier ist ein weiteres Problem, das ich mit iKe gelöst habe.

Bearbeiten 2:

Ein Byte mit einer einfacheren Methode zum Erstellen der Bitmap gespeichert:

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

Meine Frage im OP wurde nicht beantwortet, aber für den Datensatz, wenn flexiblere Farbanforderungen zulässig sind, würde dieses Programm 30 Bytes unter Verwendung der Windows 3.1-Palette sein:

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

flag2

Seit diesem Problem hat iKe eine Funktion erhalten, die automatisch Texturen zentriert, die ohne Position gezeichnet wurden. Dadurch könnten weitere 3 Bytes eingespart werden. Dies verstößt jedoch gegen die Regeln:

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

Oktave, 77 76 Bytes

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

Zeigt das Bild an:

Bildbeschreibung hier eingeben

Becherglas
quelle
7

Verarbeitung, 100 Bytes

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

Zeigt Folgendes an: Frankreich

(Die naive Lösung ist kürzer als meine erste.)

Geokavel
quelle
Ich denke, die Zeichenbefehle von Processing können hier vor dem Pixel-Push size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
herauskommen
@ JohnE Lol, ja, das habe ich gerade bemerkt.
Geokavel
@JohnE Auch meine super Basislösung ist kürzer als deine!
Geokavel
Haha - es sieht so aus, als hätten wir es beide zu
kompliziert
Wie wäre es mit dem Missbrauch der Waagenanweisungen? Dies funktioniert auf sketchpad.cc, kann jedoch bei Verarbeitung 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

Ruby, 56 47 45 Bytes

ASCII

$><<"\e[34z\e[37z\e[31z\n".gsub(?z,?m*27)*52
Peter Lenkefi
quelle
Ja, das ist besser als meins. Nur der mittlere Balken muss weiß sein.
iamnotmaynard
@iamnotmaynard Richtig, behoben. Vielen Dank!
Peter Lenkefi
7

PHP, 70 Bytes

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);

Das obige ist ein Hexdump, der mit umgekehrt werden kann xxd -r. Alternativ kann es auch mit folgendem PHP-Skript generiert werden:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Ich gehe von Standardeinstellungen aus, da diese ohne .ini sind (Sie können Ihre lokale .ini mit der -nOption deaktivieren ). Erzeugt ein BMP-Bild (288 x 192), das in eine Datei umgeleitet werden soll. Dies ist so groß wie ich es machen kann, ohne die Byteanzahl zu beeinflussen.


Beispielnutzung

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

Ausgabe

Französische Flagge

primo
quelle
Diese Farben sehen nicht richtig aus. Verwenden sie die in der Frage angegebenen RGB-Werte?
Türknauf
@ Doorknob Sie tun. Ab Byte 26 wird eine Farbpalette mit drei Werten definiert (bgr): A45500, FFFFFF, 3541EF.
Primo
6

ShaderToy (GLSL), 147 Byte

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);}

Sehen Sie es hier

Nicht besonders aufregend. Ich bin mir sicher, dass es Möglichkeiten gibt, mehr Golf zu spielen. Ich mache eine Pause, wenn ich nach Hause komme.

Robert Fraser
quelle
3
Der Link leitet zu shadertoy.com/error weiter : /
Quentin