Disegna la bandiera nazionale della Francia


106

Ci sono state molte altre sfide poste dalla bandiera, ma non una per la bandiera nazionale della Francia . Questa settimana sembra un momento opportuno.

Produrre questo flag nel minor numero di byte possibile:

bandiera francese

  • L'immagine deve avere un rapporto di 3: 2, con dimensioni di almeno 78 pixel di larghezza e 52 pixel di altezza.
  • Ogni striscia occupa un terzo della larghezza.
  • I colori striscia da sinistra a destra sono RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • L'immagine può essere salvata in un file o reindirizzata a STDOUT in qualsiasi formato di file immagine comune oppure può essere visualizzata.
  • In alternativa, genera un blocco di testo largo almeno 78 caratteri composto da caratteri non bianchi che raffigura la bandiera, usando i codici colore ANSI per colorarlo. (Usa blu, bianco e rosso standard.)
  • Non sono consentite immagini / librerie di flag integrate.

Vince il codice più breve in byte.

Classifica

Lo snippet di stack nella parte inferiore di questo post genera la classifica dalle risposte a) come un elenco della soluzione più breve per lingua eb) come classifica generale.

Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, usando il seguente modello Markdown:

## Language Name, N bytes

dov'è Nla dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:

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

Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:

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

Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:

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


4
Quei valori RGB non corrispondono alla tua immagine. Da quello che vedo, hai RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
becher

8
La memorizzazione compatta della tavolozza specificata è probabilmente la parte più difficile di questo problema nella maggior parte delle lingue. Detto questo, sembra piuttosto ingiusto soluzioni grafiche per consentire l'output ANSI con una tavolozza standard. Perché non consentire alle soluzioni grafiche di usare pure (0, 0, 255) / (255, 255, 255) / (255, 0 0) per livellare il campo di gioco?
Giovanni,

15
Ogni striscia occupa un terzo della larghezza. Potrebbe essere più interessante usare la variante navale: con un regolamento del 17 maggio 1853, la marina tornò a usare le proporzioni 30:33:37, che ora continua a usare, poiché il battito della bandiera rende le porzioni più lontane dal la drizza sembra più piccola.
Ben Jackson,

34
echo 🇫🇷non abbastanza grande
Trauma digitale il

5
@JohnE Sono d'accordo. Le regole sui colori danno alle soluzioni di arte ASCII un enorme vantaggio. Inoltre, non rendono la sfida più "difficile" (aggiunge semplicemente byte) per le lingue che possono usare colori arbitrari e squalifica diverse lingue interessanti che non possono fare colori arbitrari.
uno spaghetto il

Risposte:


38

CJam, 23 22 byte

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*

Quanto sopra è un dump esadecimale che può essere invertito xxd -r.

Al costo di due byte extra - per un totale di 24 byte - possiamo invece utilizzare i colori di sfondo, rendendo l'output un po 'più bello.

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*

Come funziona

In entrambi i programmi, usiamo la sequenza di escape ANSI \x9bXYm- dove Xè 3per il colore di primo piano e 4per il colore di sfondo, e Yspecifica il colore da usare - per passare tra i tre colori della bandiera.

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

L'altro programma è simile.

Produzione

produzione


Al momento non sono sicuro di quanto dovrei rendere l '"immagine".
Dennis,

Sono andato con 78x30 nella mia risposta. Quelle dimensioni in Lucida Console 9 pt (il carattere predefinito per xterm) davano il più vicino a 3: 2.
Mego

Potresti usare un blocco completo per la "bellezza"
Matthew Roh,

75

Pure Bash (su OSX), 84

Il terminale OSX predefinito supporta emoji a colori. Non sono sicuro se questo conta come output di testo o grafico.

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

L'output è simile a:

inserisci qui la descrizione dell'immagine


In alternativa:

Bash con utility OSX, 56

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

L' dcespressione:

  • calcola 3^26-1e stampa in ternario22222222222222222222222222
  • lo divide per 2, quindi si moltiplica per 3^26. Uscita in ternario questo è1111111111111111111111111100000000000000000000000000

trquindi traduce i 210 caratteri in 🔵⚪️🔴. yesgenera questa linea indefinitamente. sed 26qinterrompe l'uscita a 26 righe.


51
Un terminale che supporta emoji. Wow.
r-

6
La prima soluzione non usa i giusti valori RGB né usa i colori ANSI standard, vero?
Maniglia della porta

@Doorknob Hai ragione, ovviamente, nessuna soluzione lo fa, quindi questa risposta potrebbe superare la linea. Ho chiesto chiarimenti all'OP
Digital Trauma,

3
È solo Unicode.
undergroundmonorail,

1
@steve Non mi aspettavo davvero che questa risposta diventasse così popolare, soprattutto perché ci sono domande sulla sua validità . Puoi dare uno yay o no se pensi che sia valido? Grazie!
Trauma digitale,

51

Desmos, 30 12 byte

3x>10
3x<-10

Provalo online.

Non sono del tutto sicuro se questo è valido, per favore fatemi sapere se ci sono problemi.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ I colori predefiniti sono rosso e blu in questo ordine (credo), quindi non è necessario impostarli.
uno spaghetto il

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Quindi è un generatore di flag casuale;)
DanTheMan il

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Non sono casuali per me - l'immissione manuale di due disuguaglianze mi rende costantemente rosso, quindi blu.
Mego

1
Questo è strano. Sto diventando anche rosso e blu.
lirtosiast

2
Non penso che lo sia ... né si adatta esattamente alle proporzioni.
Maniglia della porta

51

Python 2, 47 byte

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

Contiene non stampabili - ecco un hexdump (reversibile con 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

Utilizza i codici di escape ANSI per stampare caratteri colorati su STDOUT - Ho scelto "F" per la Francia. Nessun collegamento online perché ideone non supporta i codici di escape ANSI nell'output.

Grazie a Dennis e xnor per alcuni ottimi consigli.

Screenshot da xterm:

bandiera


1
Hai uno spazio extra lì. in [0]->in[0]
mbomb007,

2
1. È possibile utilizzare byte ESC effettivi anziché \x1b. 2. Il grassetto non sembra essere necessario. 3. Non sono sicuro che ciò valga anche per l'arte ANSI, ma la domanda sembra imporre un rapporto 3: 2.
Dennis,

E 'più breve per sub nei parametri con la formattazione: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Premi F per rendere
omaggio

4
Il personaggio sembra leggermente più bello, ad es print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
Ali_m

44

HTML / SVG, 76 byte 87 88 121 122 149

Salvato 27 byte grazie a @insertusernamehere

Salva 9 byte grazie a @Joey

Salvato 1 byte grazie a @sanchies

Salva 1 byte grazie a @Neil

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

Utilizzando un sacco di abuso di sintassi HTML, questo può essere piuttosto breve.


Schermata dell'output:

Uscita bandiera francese


Oppure provalo (assicurati che il tuo browser supporti SVG):

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


3
Ho provato a batterti con CSS e ora ho golfato il tuo SVG che è ancora più piccolo della mia soluzione CSS. : D Questo è il più breve che ho potuto lavorare in Safari, Chrome e Firefox, è lungo 122 byte :<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
inserire nomeutentequi

1
@inserireusernamehere Grazie, che ha salvato 27 byte! Sono riuscito a golf ulteriormente fino a un sorprendente 88 byte
Downgoat

3
Anche per me fill=#0055a4 />funziona (no "), salvando un intero byte.
Sanchises,

3
@sanchizza un intero byte? o_O wow : D
developerbmw

4
@developerbmw In realtà, sarebbe più impressionante salvare mezzo byte quando ci pensate.
Sanchises,

29

Brainfuck $ , 153 byte

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

Emette l'immagine con codici colore ANSI. Ho scelto un'altezza di 30 come Mego .

L'implementazione di riferimento del 2009 collegata alla pagina di esolangs è scomparsa. Puoi eseguirlo usando questo interprete fatto da me, che supporta tutto dalla pagina di esolangs.

Brainfuck, 258 byte

Questa è sostanzialmente la stessa cosa, ma solo nella vecchia Brainfuck.

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

Oppure, se preferisci questo in oOo CODE (984 byte):

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 byte

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

(ugh, +17 caratteri a causa di requisiti di colore che non avevo notato prima ...)

Output nel file a, nel formato 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

Può anche essere emesso in PNG, se si cambia il nome del file in a.png(+4 caratteri).

Produzione:

inserisci qui la descrizione dell'immagine


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

@DigitalTrauma Grazie! Ciò consente di risparmiare 4 caratteri e non si chiude con un errore. (Inoltre, non ho mai saputo che ImageMagick potesse leggere / scrivere su STDIN.)
Maniglia della porta

Puoi usare -scaleinvece di -sample; inoltre, la barra rovesciata non sembra essere necessaria
aditsu,

25

LaTeX, 139 byte

Grazie a @WChargin per aver salvato 21 byte.

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

Questo stampa la seguente immagine di 12 cm * 8 cm su una pagina A4:

inserisci qui la descrizione dell'immagine

Si noti che anche "Pagina 1" è stampata nella parte inferiore della pagina


1
Bene, questo è circa 100 byte più corto della mia asymptotesoluzione ...
Arcturus,

1
s.\newcommand\z[1].\def\z#1per salvare un mucchio di byte. Inoltre, puoi raderne alcuni usando \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!- cioè, usa i tuoi delimitatori invece delle parentesi graffe per il raggruppamento
wchargin

1
Puoi anche\input color
wchargin

1
Per completezza, versione rivista (139 byte):\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 byte

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

Ci sono alcuni caratteri non stampabili, quindi ecco un 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

Questo crea un file o.png, che è esattamente largo 78 pixel e alto 52 pixel:

inserisci qui la descrizione dell'immagine

Spiegazione:

.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
Per un secondo, ho pensato di aver frainteso gravemente le specifiche PNG.
primo

1
save it as an image o.png, ma non c'è ".png" da nessuna parte?
rev

1
@AsidShout Come si chiama il programma? Se lo usi python3 pyth.py code.pyth, puoi trovarlo nella stessa directory.
Jakube,

20

HTML (modalità strane), 68 byte

Questo utilizza la modalità stranezze per il rendering del flag.

L'HTML è MOLTO non valido, ma funziona su un browser Android 4.4.2 di serie e su Firefox 42.0 (su Windows 7 x64).

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

La bandiera è resa con le giuste dimensioni e i colori rosso e blu standard. Tutte le pagine web iniziano con uno sfondo bianco standard.



Come alternativa:

Una versione HTML5 perfettamente valida (141 byte):

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

Verifica la sua validità su: https://html5.validator.nu/

Schermata di stampa del risultato:

risultato della convalida


1
Sei sicuro? Quando ho un file HTML con solo questa linea, non funziona in Firefox, Chrome e Safari. Se il file contiene altri elementi HTML dopo quella riga, funziona per me. Quindi forse non puoi scartare il finale >?
insertusernamequi

1
"Perfettamente valido"? Dovrebbe essere style="..."se è quello che stai cercando nel secondo esempio.
mbomb007,

3
@ mbomb007 Quello che sto cercando è creare il codice HTML valido più piccolo. Si convalida con il validatore ufficiale, quindi è un codice HTML perfettamente valido . Puoi provarlo tu stesso se non ci credi.
Ismael Miguel,

1
@ mbomb007 Inoltre, le virgolette mancanti sono il problema più piccolo: non c'è <html>, no <head>, no <body>, no </tr>, no </td>e nessuna chiusura di tutti i tag mancanti.
Ismael Miguel,

1
@inserireusernamehere Avevi ragione. Stava infastidendo anche su Android. L'ho provato su jsfiddle. Ma quando si accede data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, non funzionava. Risolto il problema ora e utilizzare il collegamento per testarlo.
Ismael Miguel,

17

TI-Basic, 52 44 42 byte

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

(presuppone un'area predefinita del grafico [-10,10,1] per [-10,10,1])

Sarebbe più corto di 4 byte senza le prime 2 righe, ma per impostazione predefinita avrebbe assi e non sarebbe bello.

Somiglia a questo:

inserisci qui la descrizione dell'immagine

Se l'ombreggiatura non è valida per la sfida, fammi sapere!

Senza le prime 2 righe, si presenta così:

inserisci qui la descrizione dell'immagine


Includerei anche la versione senza le prime tre righe come confronto.
GamrCorps il

1
Penso che puoi semplicemente passare da Ymin a Ymax. Puoi anche assumere una schermata predefinita da -10 a 10. Non sono anche sicuro della validità di questo, poiché le regioni rossa e blu sono solo parzialmente ombreggiate.
lirtosiast

@ThomasKwa Ho modificato il mio post per mostrare perché non ho usato solo Ymin e Ymax. Non mi ero reso conto che avrei potuto assumere una schermata predefinita, ma non sei chiaro su cosa sia quella schermata predefinita. Potresti chiarire, per favore? Riguardo alla cosa "semi-ombreggiata", è così che TI-Basic oscura le cose, se non è valido, lo cambierò prontamente.
DanTheMan,

1
Una schermata predefinita è Ymin = Xmin = -10, Ymax = Xmax = 10. La calcolatrice inizia con quelle impostazioni della finestra e AxesOn ecc., Quindi puoi assumerle.
lirtosiast

1
@Doorknob Per quanto ne so, è impossibile farlo senza ricorrere alla stregoneria.
DanTheMan,

17

ffmpeg, 110 113 116 117 119 108 100 byte

Visualizza, usando ffplay, 100 byte:

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

Salvato su file, usando ffmpeg, 108 byte:

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

La versione corrente del comando si interromperà con un errore, ma verrà emessa una singola immagine ".png", come mostrato di seguito.

inserisci qui la descrizione dell'immagine


8
Wow. Abuso di ffmpeg per creare immagini ...
Cole Johnson,

Heh, ho visto questa domanda e ho pensato di fare lo stesso. Bel lavoro che lo rende compatto. Se è consentito, puoi ridurlo leggermente utilizzando whiteinvece di #ffffff: i valori dovrebbero essere gli stessi.
Llogan,

Lo so. Non era abbastanza disturbato. Lo farò ora.
Gyan,

#Fff funziona?
ev3commander,

No. Ma posso saltare la f in f.png
Gyan il

16

CSS, 127 128 144 byte

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

Non è necessario un altro tag, funziona esclusivamente con l' bodyelemento.

Le modifiche

  • Salvato 16 byte rimuovendo display:block;e alcuni ;.
  • Salvato 1 byte , rimosso il finale }.

6
Sebbene tecnicamente CSS non sia un linguaggio di programmazione secondo le nostre definizioni.
Conor O'Brien,

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Lo so - volevo solo battere SVG .
insertusernamequi

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ ha ragione, questa non è una risposta valida.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ il css è stato salvato come file SASS, dal momento che SASS è un linguaggio di scripting sarebbe una risposta valida?
fcalderan,

6
Sì, il CSS normale è un file SASS valido.
ev3commander,

16

JavaScript, 140 143 147 151 153 byte

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


Le modifiche

  • Salvato 2 byte sostituendo 2*i*26con i*52. Grazie a Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Salvato 4 byte rifattorizzando il for-loop. Grazie a ETHproductions .
  • Salvato 2 byte utilizzando lo withstato. Grazie a Dendrobium .
  • Salvato 2 byte trasformando l'incremento in decremento. Grazie a Shaun H .
  • Salvato 3 byte sostituendo fillStyle=["#0055a4","#ef4135"][i]con i?"#ef4135":"#0055a4".

3
2*i*26può diventare 52*i, no?
Conor O'Brien,

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Certo che può. Grazie. È molto al di là del mio letto.
inserireusernamehere il

2
Puoi radere 2 byte usando la withdichiarazione: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
salva un byte: x=(d=document).body.appendChild(d.createElementtela ).getContext2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H

2
@Dendrobium Va bene. Molte grazie.
inserire nomeutentequi

13

R, 59 byte

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

L'output viene visualizzato:

inserisci qui la descrizione dell'immagine

Si possono anche fare 49 byte con

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

se non ti dispiace gli assi e i bordi:

inserisci qui la descrizione dell'immagine


2
Il rapporto sembra sbagliato. Penso che tu abbia un rapporto 2: 3 su un rettangolo monocromatico anziché un rapporto 3: 2 sull'intera bandiera.
Fatalizza il

Il rapporto può essere regolato manualmente ridimensionando la finestra di stampa.
flodel,

3
Per qualificarti, la tua iscrizione dovrebbe funzionare "out of the box". Altrimenti, chiunque può pubblicare una soluzione da 6 pixel e dire "Puoi ingrandire manualmente".
Sanchises,

4
Tu dici "asce", io dico "asta della bandiera".

2
@sanchise: sono francese e dico fottutamente. LIBERTE!
flodel,

12

Blitz 2D / 3D , 154 108 byte

Questo produce esattamente la stessa cosa dell'esempio fornito nella domanda (tranne per l'antialiasing ai bordi in cui i colori si incontrano).

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

L'output viene visualizzato e si presenta così:

inserisci qui la descrizione dell'immagine


12

Mathematica, 63 94 103 byte

Quando ho visto questa sfida per la prima volta, ho pensato a Sweet! Mathematica sarebbe perfetta per questo! fino a quando ho notato che i built-in sono stati vietati: '(

Ma aspetta! Posso usare i grafici a barre!

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

(Grazie a Martin Büttner per la rasatura di 5 byte ma l'aggiunta di 16)

Somiglia a questo:

inserisci qui la descrizione dell'immagine

Se aggiungi ,Axes->None, assomiglia a questo:

inserisci qui la descrizione dell'immagine

Se non ti interessa il bordo, puoi usare questo: (95 byte)

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

Somiglia a questo:

inserisci qui la descrizione dell'immagine

Senza assi:

inserisci qui la descrizione dell'immagine


3
Axes->None. Dovresti anche specificare AspectRatio->2/3. Rinominare RGBColorè semplice: r=RGBColor;...r["..."]. È inoltre possibile utilizzare la notazione con prefisso per salvare altri due byte r@"#0055a4".
Martin Ender,

Se non hai bisogno del contorno, prova BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Il rosso sembra abbastanza vicino.
DavidC,

@DavidCarraher Meh, poiché la domanda specifica un particolare valore RGB, che si dovrebbe usare esattamente.
Martin Ender,

La mia raccomandazione principale era di disegnare due rettangoli, non tre. Tuttavia, tecnicamente hai ragione sul rosso.
DavidC,

I bordi attorno alle barre non invaliderebbero questa soluzione?
LegionMammal978,

11

Javascript (ES6) 117 byte

Lo disegna nella console

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


2
Per 'white'Penso che sia più breve per fare: #fff. Inoltre, i colori rosso e blu devono corrispondere ai colori specificati nelle specifiche
Downgoat,

1
Puoi salvare alcuni byte i=c=s=[]invece di i=0,c=[],s=''dopo aver aggiornato i colori che potrebbero aiutare un po '...
Dom Hastings

1
@ Vɪʜᴀɴ Quando si emette un testo, è possibile utilizzare i colori standard ( rede blue). È il secondo punto, contando dal basso. Questo è all'interno delle specifiche.
Ismael Miguel,

@DomHastings Bel suggerimento, uso intelligente della coercizione. Grazie!
George Reith,

1
@sysreq Il testo nella console ... Non ho alcun controllo sull'altezza della tua console. Ha 78 caratteri in larghezza 52 in altezza.
George Reith,

10

pb , 68 byte

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

Wow, una sfida per la quale pb è davvero un bene! Quelli sono pochi e lontani tra loro.

Quando stavo scrivendo le specifiche per pb, ho incluso l'output colorato principalmente per scherzo. Il linguaggio è stato chiamato dopo un "pennello", perché sarebbe non fare il colore? Oltre ai programmi di esempio, questa è la seconda volta che lo uso. È implementato con codici ANSI come richiesto dalla domanda.

Ho usato 'M' come personaggio per l'uscita perché è abbastanza denso.

Produzione:

Ho ridimensionato lo screenshot verticalmente in modo che fosse due terzi della sua altezza perché le lettere non sono quadrate. L'output è 78 per 52, ma lo screenshot originale sembra davvero sbagliato.

Con commenti, rientri e spazzatura:

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 ti darà le dimensioni che desideri per l'uscita del terminale.
Mego

@Mego Sì, ma non sono sicuro che sia permesso.
undergroundmonorail,

L'output risultante su xterm nel font predefinito corrisponde alle dimensioni specificate.
Mego

Mi sentirei strano misurare le dimensioni dell'output della console in tutto tranne che nei "personaggi", però.
undergroundmonorail,

1
Quando i tuoi personaggi sono alti 1,2 volte quanto sono larghi, non creano pixel molto buoni.
Mego

10

C, 115 byte

inserisci qui la descrizione dell'immagine

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

Contiene non stampabili:

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

Perché questo programma funzioni, un paio di cose devono essere vere:

  • Il terminale supporta la ESC [48;2;<r>;<g>;<b>msequenza di escape "truecolor".
  • Il terminale non è xterm, poiché l'implementazione di xterm di quanto sopra produrrà colori leggermente sbagliati.
  • Il terminale ignora completamente i caratteri NUL.

Sembra anche più bello se lo sfondo del tuo terminale è nero.

Per modificare l'altezza del flag, passare gli argomenti della riga di comando al programma. Per ogni argomento superato, la bandiera diventa più corta di una riga. Non è un bug, è una funzionalità!

Produzione:

inserisci qui la descrizione dell'immagine


Si è verificato un problema durante la compilazione di questo gcc(versione 5.1.1). Eventuali flag specifici necessari per la compilazione? "ac: 1: 10: avviso: ISO C99 richiede spazi bianchi dopo il nome macro #define c" \ x1b [48; 2;% d;% d;% dm "
steve

1
@Steve è un avvertimento che è un errore?
Functino,

1
@Steve Ho appena provato di nuovo, gcc 5.2.1. Nessuna bandiera. Ha prodotto 12 avvisi ma ha creato un file binario funzionante.
Functino,

scuse - funziona benissimo - confuso dagli avvertimenti (e dal fatto che il codice sembra piuttosto enigmatico per un neofita C come me)
steve

9

MATLAB, 82 79 78 byte

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)

L'output è simile a:


1
Quale versione di MATLAB? Non funziona su r2013a poiché i colori devono essere numeri decimali nell'intervallo [0,1].
Tom Carpenter,

1
La seguente riga funziona fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)e ti fa risparmiare 2 byte. :) Utilizzerei anche i punti e virgola anziché le nuove righe per evitare che vengano stampate altre cose.
Tom Carpenter,

1
@TomCarpenter Ho spaziato sulla scala dei colori 0-1, è passato un po 'di tempo da quando ho dovuto specificare i colori. Per quanto riguarda i punti e virgola / le nuove righe, stavo scegliendo la leggibilità rispetto alla scrittura su console, ma ho cambiato la mia risposta
costrom

9

Visual Basic + Excel, 618 137 byte

Solo curioso di vedere come questo può essere giocato a golf.

EDIT: Curiosità sazio, grazie a @Neil e @JimmyJazzx, 618 byte scesi fino a 137 byte

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

Bandiera Excel


1
La registrazione di una macro risulta in un codice terribilmente inefficiente. Prova Range("A1:C13").Interior.ColorIndex = 5e Range("G1:I13").Interior.ColorIndex = 3che sembra essere sufficiente.
Neil,

2
Siamo spiacenti, era Excel 2003 e ho dimenticato di includere il ActiveWorkbook.Colorsper specificare i valori RGB esatti. Excel 2007 ha opzioni di colore aggiuntive ma non le conosco di persona.
Neil,

1
Ottengo 137 byte con alcune modifiche rapide. Penso che puoi ridurlo di più, ma queste sono le facili modifiche. 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,

Ricevo 135 conSub 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 il

9

CSS, 102 110 111 114 byte

*{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}- un byte più breve
user2428118

1
in realtà un singolo * è abbastanza :) Grazie!
Thomas Eschemann,

1
+1; È possibile salvare un altro byte rimuovendo il trailing }.
inserireusernamehere

1
Puoi eliminare il primo colore, risparmi 8 byte.
Awashi,

È possibile sostituire l'ultimo 66%con 0.
Mr_Green,

8

Dyalog APL ( 47 44)

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

Risultato:

bandiera


2
puoi fare 2*8 11 10?
lirtosiast

1
@ThomasKwa: grazie
marinus,

8

iKe , 43 byte

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

Questo è un esempio di programma iKe "raw tuple": è solo una descrizione di un origin ( 0 0), una palette ( 3 7#"#0055A4#FFFFFF#EF4135") e una bitmap ( +52#'&3#26). È necessario racchiudere una descrizione come questa in una funzione o utilizzare riferimenti alle viste se si desidera animarla.

La palette è un modo molto semplice per creare una serie di colori CSS, equivalenti esadecimali della specifica.

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

Se i requisiti di colore fossero meno rigorosi, potremmo usare una delle palette incorporate di iKe e salvare un numero considerevole di caratteri:

windows@7 0 4

bandiera

Provalo nel tuo browser .

Modificare:

Salvato un byte utilizzando un breve #FFFcolore CSS per la striscia bianca:

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

Se qualcun altro è interessato a giocare con iKe, c'è un manuale sul repository github . ecco un altro problema che ho risolto usando iKe.

Modifica 2:

Salvato un byte con un modo più semplice per costruire la bitmap:

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

La mia domanda nell'OP non ha ricevuto risposta, ma per la cronaca se sono ammessi requisiti di colore più flessibili, questo programma sarebbe di 30 byte utilizzando la tavolozza di Windows 3.1:

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

flag2

Da quando è stato riscontrato questo problema, iKe ha acquisito una funzione che centra automaticamente le trame disegnate senza una posizione, che potrebbe salvare altri 3 byte, ma ciò sarebbe contrario alle regole:

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

7

Ottava, 77 76 byte

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

Visualizza l'immagine:

inserisci qui la descrizione dell'immagine


7

Elaborazione, 100 byte

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

Visualizza questo: Francia

(La soluzione ingenua è più breve della mia prima.)


Penso che i comandi di disegno di Processing possano emergere prima del pixel che spinge qui: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 Lol, sì, l'ho appena notato.
geokavel,

@JohnE Anche la mia soluzione super-base è più corta della tua!
geokavel,

haha- sembra che lo abbiamo complicato troppo
John E

che ne dici di abusare delle istruzioni della bilancia? Funziona su sketchpad.cc ma potrebbe interrompersi in 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 byte

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

Quanto sopra è un dump esadecimale che può essere invertito xxd -r. In alternativa, può anche essere generato con il seguente script PHP:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Presumo le impostazioni predefinite, in quanto sono senza un .ini (è possibile disabilitare il proprio .ini locale con l' -nopzione). Produce un'immagine .bmp (288 x 192), che dovrebbe essere convogliata su un file. È grande quanto posso farcela senza influire sul conteggio dei byte.


Esempio di utilizzo

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

Produzione

Bandiera francese


Questi colori non sembrano giusti. Usano i valori RGB specificati nella domanda?
Maniglia della porta

@Doorknob Lo fanno. A partire dal byte 26, viene definita una tavolozza di colori a tre valori (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);}

Vedi qui

Non particolarmente eccitante. Sono sicuro che ci sono modi per giocare a golf di più; Prenderò una crepa quando torno a casa.


3
Il link reindirizza a shadertoy.com/error : /
Quentin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.