Dessine le drapeau national de la france


106

Il y a eu beaucoup d' autres défis drapeau affichés mais pas un pour le drapeau national de France . Cette semaine semble être un moment opportun.

Produisez ce drapeau dans le plus petit nombre d'octets possible:

drapeau français

  • L’image doit être au format 3: 2, avec une taille d’au moins 78 pixels en largeur et une hauteur de 52 pixels.
  • Chaque bande occupe un tiers de la largeur.
  • Les couleurs de bande de gauche à droite sont RVB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • L'image peut être enregistrée dans un fichier ou transférée brute vers STDOUT dans n'importe quel format de fichier d'image commun, ou elle peut être affichée.
  • Vous pouvez également générer un bloc de texte d'une largeur minimale de 78 caractères, composé de caractères non-blancs illustrant l'indicateur, en utilisant des codes de couleur ANSI pour le colorer. (Utilisez le bleu, le blanc et le rouge standard.)
  • Les images / bibliothèques d'indicateur intégrées ne sont pas autorisées.

Le code le plus court en octets gagne.

Classement

Le fragment de pile au bas de cet article génère le classement à partir des réponses a) sous forme de liste des solutions les plus courtes par langue et b) sous forme de classement global.

Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:

## Language Name, N bytes

Nest la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:

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

Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:

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

Vous pouvez également faire du nom de langue un lien qui apparaîtra ensuite dans l'extrait de code:

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


4
Ces valeurs RVB ne correspondent pas à votre image. D'après ce que je vois, vous avez RVB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
Bécher

8
Stocker de manière compacte la palette spécifiée est probablement la partie la plus délicate de ce problème dans la plupart des langues. Cela étant, il semble plutôt injuste que des solutions graphiques autorisent la sortie ANSI avec une palette standard. Pourquoi ne pas autoriser les solutions graphiques à utiliser pur (0, 0, 255) / (255, 255, 255) / (255, 0 0) pour niveler le terrain de jeu?
JohnE

15
Chaque bande occupe un tiers de la largeur. Il serait peut-être plus intéressant d’utiliser la variante navale: par un règlement du 17 mai 1853, la marine est revenue à l’utilisation des proportions 30:33:37, qu’elle continue à utiliser, le battement du drapeau rendant les portions plus éloignées du drisse semble plus petit.
Ben Jackson

34
echo 🇫🇷pas assez grand
Digital Trauma

5
@JohnE Je suis d'accord. Les règles relatives aux couleurs confèrent aux solutions ASCII-art un avantage considérable. De plus, ils ne rendent pas le défi plus "difficile" (ajoute simplement des octets) pour les langages pouvant utiliser des couleurs arbitraires et disqualifient plusieurs langages sympas qui ne peuvent pas faire de couleurs arbitraires.
un spaghetto

Réponses:


38

CJam, 23 22 octets

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*

Ce qui précède est un hexdump qui peut être inversé xxd -r.

Au prix de deux octets supplémentaires, pour un total de 24 octets , nous pouvons utiliser des couleurs d'arrière-plan, ce qui rend la sortie un peu plus jolie.

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*

Comment ça fonctionne

Dans les deux programmes, nous utilisons la séquence d'échappement ANSI \x9bXYm- où Xse trouvent la 3couleur de premier plan et la couleur 4d'arrière-plan, et Yspécifie la couleur à utiliser - pour basculer entre les trois couleurs du drapeau.

'<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'autre programme est similaire.

Sortie

output


Je ne suis actuellement pas sûr de la taille de l'image.
Dennis

Je suis allé avec 78x30 dans ma réponse. Ces dimensions dans Lucida Console 9 pt (la police par défaut de xterm) correspondaient le plus près de 3: 2.
Mego

Vous pouvez utiliser un bloc complet pour 'prettyness'
Matthew Roh

75

Pure Bash (sur OSX), 84

Le terminal OSX par défaut supporte les emojis en couleur. Vous ne savez pas si cela compte comme une sortie texte ou graphique.

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

La sortie ressemble à:

enter image description here


Alternativement:

Bash avec les utilitaires OSX, 56

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

L' dcexpression:

  • calcule 3^26-1et imprime en ternaire22222222222222222222222222
  • divise cela par 2, puis multiplie par 3^26. Sortie en ternaire c'est1111111111111111111111111100000000000000000000000000

trpuis traduit les 210 caractères en 🔵⚪️🔴. yesaffiche cette ligne indéfiniment. sed 26qarrête la sortie à 26 lignes.


51
Un terminal qui supporte les emojis. Sensationnel.
rr-

6
La première solution n'utilise pas les bonnes valeurs RVB, ni les couleurs ANSI standard, n'est-ce pas?
Poignée de porte

@Doorknob Vous avez raison bien entendu - aucune des solutions ne le permet - cette réponse risque donc de dépasser la ligne. J'ai demandé des explications au PO
Traumatismes numériques

3
C'est juste Unicode.
undergroundmonorail

1
@steve Je ne m'attendais pas vraiment à ce que cette réponse devienne si populaire, d'autant plus qu'il y a des questions sur sa validité . Pouvez-vous donner un oui ou un non quant à savoir si vous pensez que c'est valable? Merci!
Digital Trauma

51

Desmos, 30 12 octets

3x>10
3x<-10

Essayez-le en ligne.

Je ne suis pas tout à fait sûr que cela soit valide, s'il vous plaît laissez-moi savoir s'il y a des problèmes.


3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Les couleurs par défaut sont le rouge et le bleu dans cet ordre (je crois), il n'est donc pas nécessaire de les définir.
un spaghetto

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ensuite, c'est un générateur d'indicateurs aléatoires;)
DanTheMan

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ils ne sont pas aléatoires pour moi - entrer deux inégalités manuellement me fait constamment passer au rouge, puis au bleu.
Mego

1
Cela est étrange. Je deviens rouge et bleu aussi.
lirtosiast

2
Je ne pense pas que ce soit le cas ... et cela ne correspond pas exactement au rapport d'aspect.
Poignée de porte

51

Python 2, 47 octets

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

Contient des éléments non imprimables - voici un hexdump (réversible avec 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

Utilise les codes d'échappement ANSI pour imprimer des caractères colorés sur STDOUT - J'ai choisi "F" pour la France. Aucun lien en ligne, car ideone ne prend pas en charge les codes d'échappement ANSI en sortie.

Merci à Dennis et xnor pour leurs bons conseils.

Capture d'écran de xterm:

flag


1
Vous avez un espace supplémentaire là-bas. in [0]->in[0]
mbomb007

2
1. Vous pouvez utiliser les octets ESC réels au lieu de \x1b. 2. Les caractères gras ne semblent pas être nécessaires. 3. Je ne suis pas sûr que cela s'applique aussi à l'art ANSI, mais la question semble imposer un rapport de 3: 2.
Dennis

Il est plus court sous dans les paramètres avec la mise en forme: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
xnor

16
Appuyez sur F pour rendre hommage
Riking

4
Le personnage est légèrement plus joli, par exemple print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m

44

HTML / SVG, 76 octets 87 88 121 122 149

Enregistrement de 27 octets grâce à @insertusernamehere

Enregistre 9 octets grâce à @Joey

1 octets sauvés grâce à @sanchies

Économise 1 octet grâce à @Neil

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

En utilisant beaucoup d'abus de syntaxe HTML, cela peut être assez court.


Capture d'écran de la sortie:

France Flag Output


Ou essayez-le (assurez-vous que votre navigateur prend en charge SVG):

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


3
J'ai essayé de vous battre avec CSS et maintenant je joue au golf avec votre SVG, qui est encore plus petit que ma solution CSS. : D C'est le plus court dans lequel j'ai pu travailler dans Safari, Chrome et Firefox, il a une longueur de 122 octets :<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusernamehere

1
@insertusernamehere Merci, cela a sauvé 27 octets! J'ai réussi à
pousser

3
Pour moi, fill=#0055a4 />fonctionne aussi (non "), en sauvegardant un octet entier.
Sanchises

3
@sanchises un octet entier? o_O wow : D
developerbmw

4
@developerbmw En fait, il serait plus impressionnant d'économiser un demi-octet quand on y pense.
Sanchises

29

Brainfuck $ , 153 octets

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

Sort l'image avec les codes de couleur ANSI. J'ai choisi une hauteur de 30 comme Mego .

L'implémentation de référence à partir de 2009 liée à la page esolangs a disparu. Vous pouvez le lancer en utilisant cet interpréteur créé par moi, qui supporte tout depuis la page esolangs.

Brainfuck, 258 octets

C’est fondamentalement la même chose, mais tout simplement dans le vieux Brainfuck.

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

Ou, si vous préférez celui-ci en oOo CODE (984 octets):

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 octets

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

(ugh, +17 caractères en raison des exigences de couleur que je n'avais pas remarquées auparavant ...)

Sorties dans le fichier a, au format 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

Vous pouvez également générer des données au format PNG si vous modifiez le nom de fichier en a.png(+4 caractères).

Sortie:

enter image description here


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

@ DigitalTrauma Merci! Cela enregistre 4 caractères et ne se ferme pas avec une erreur. (Je ne savais pas non plus qu'ImageMagick pouvait lire / écrire à STDIN.)
Bouton de porte

Vous pouvez utiliser -scaleau lieu de -sample; de plus, la barre oblique inverse ne semble pas être nécessaire
Aditsu

25

LaTeX, 139 octets

Merci à @WChargin pour la sauvegarde de 21 octets.

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

Ceci imprime l’image suivante de 12 cm * 8 cm sur une page A4:

enter image description here

Notez que "Page 1" est également imprimé au bas de la page


1
C'est environ 100 octets plus courts que ma asymptotesolution ...
Arcturus

1
s.\newcommand\z[1].\def\z#1pour sauver un tas d'octets. En outre, vous pouvez en réduire quelques-uns en utilisant \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!- c'est- à -dire, utilisez vos propres délimiteurs au lieu d'accolades pour le regroupement
wchargin

1
Vous pouvez également\input color
wchargin

1
Pour être complet, version révisée (139 octets):\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 octets

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

Il y a des caractères non imprimables, alors voici 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

Cela crée un fichier de o.png78 pixels de large et de 52 pixels de haut:

enter image description here

Explication:

.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
Pendant une seconde, j'ai pensé que j'avais grossièrement mal compris la spécification PNG.
Primo

1
save it as an image o.png, mais il n'y a pas de ".png" n'importe où?
rev

1
@AsidShout Comment appelez-vous le programme? Si vous utilisez python3 pyth.py code.pyth, alors vous pouvez le trouver dans le même répertoire.
Jakube

20

HTML (mode quirks), 68 octets

Ceci utilise le mode quirks pour rendre l'indicateur.

Le code HTML est TRES invalide, mais fonctionne sur un navigateur Android 4.4.2 standard et sur Firefox 42.0 (sous Windows 7 x64).

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

Le drapeau est rendu avec la bonne taille et les couleurs rouge et bleu standard. Toutes les pages Web commencent par un fond blanc standard.



Comme alternative:

Une version HTML5 parfaitement valide (141 octets):

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

Vérifiez sa validité sur: https://html5.validator.nu/

Impression écran du résultat:

validation result


1
Êtes-vous sûr? Quand j'ai un fichier HTML avec seulement cette ligne, cela ne fonctionne pas dans Firefox, Chrome et Safari. Si le fichier contient d'autres éléments HTML après cette ligne, cela fonctionne pour moi. Alors peut-être que vous ne pouvez pas écarter le trailing >?
insertusernamehere

1
"Parfaitement valide"? Ce devrait être le style="..."cas si c'est ce que vous voulez dans le deuxième exemple.
mbomb007

3
@ mbomb007 Ce que je vais faire, c'est créer le plus petit code HTML valide. Il valide avec le validateur officiel, donc, il est parfaitement valide HTML. Vous pouvez essayer vous-même si vous ne croyez pas.
Ismael Miguel

1
@ mbomb007 De plus, les guillemets manquants sont le plus petit problème: il n'y a pas de fermeture non <html>, non <head>, non <body>, non </tr>, non </td>et sans fermeture de toutes les balises manquantes.
Ismael Miguel

1
@insertusernamehere Vous aviez raison. Il y avait aussi un bug sur Android. Je l'ai testé sur jsfiddle. Mais lors de l'accès data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, cela ne fonctionnait pas. Corrigé maintenant, et utilisez le lien pour le tester.
Ismael Miguel

17

TI-Basic, 52 44 42 octets

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

(en supposant une zone de graphique par défaut [-10,10,1] sur [-10,10,1])

Serait 4 octets plus court sans les 2 premières lignes, mais par défaut aurait des axes et ne serait pas aussi joli.

Ressemble à ça:

enter image description here

Si l'ombrage n'est pas valide pour le défi, faites le moi savoir!

Sans les 2 premières lignes, cela ressemble à ceci:

enter image description here


Je voudrais également inclure la version sans les trois premières lignes à titre de comparaison.
GamrCorps

1
Je pense que vous pouvez simplement aller de Ymin à Ymax. Vous pouvez également supposer un écran par défaut de -10 à 10. Je ne suis pas sûr non plus de sa validité, car les régions rouge et bleue ne sont que moitié-ombrées.
lirtosiast

@ThomasKwa J'ai édité mon post pour montrer pourquoi je n'utilisais pas seulement Ymin et Ymax. Je n'avais pas compris que je pouvais supposer un écran par défaut, mais vous ne savez pas exactement à quoi correspond cet écran par défaut. Pourriez-vous s'il vous plaît clarifier? En ce qui concerne le "demi-ombré", c'est comme ça que TI-Basic nuance les choses. S'il est invalide, je le changerai rapidement.
DanTheMan

1
Un écran par défaut est Ymin = Xmin = -10, Ymax = Xmax = 10. La calculatrice commence par ces paramètres de fenêtre, AxesOn, etc., afin que vous puissiez les assumer.
lirtosiast

1
@Doorknob Autant que je sache, il est impossible de le faire sans recourir à la sorcellerie.
DanTheMan

17

ffmpeg, 110 113 116 117 119 108 100 octets

Afficher, en utilisant ffplay, 100 octets:

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

Enregistré dans le fichier, en utilisant ffmpeg, 108 octets:

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

La version actuelle de la commande sera abandonnée avec une erreur, MAIS une seule image ".png" sera émise, comme ci-dessous.

enter image description here


8
Sensationnel. Abuser de ffmpeg pour faire des images ...
Cole Johnson

Heh, j'ai vu cette question et pensé à faire la même chose. Beau travail qui le rend compact. Si cela est autorisé, vous pouvez le réduire légèrement en utilisant à la whiteplace de #ffffff: les valeurs doivent être identiques.
llogan

Je connais. N'était pas assez dérangé. Je vais le faire maintenant.
Gyan

Est-ce que #fff fonctionne?
ev3commander

Non, mais je peux ignorer le f dans f.png
Gyan

16

CSS, 127 128 144 octets

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

Pas besoin d'un autre tag, fonctionne uniquement avec le body élément -el.

Édite

  • 16 octets enregistrés en supprimantdisplay:block; et certains ;.
  • Enregistré 1 octet , a supprimé la fin }.

6
Bien que techniquement, CSS ne soit pas un langage de programmation selon nos définitions.
Conor O'Brien

10
@ CᴏɴᴏʀO'Bʀɪᴇɴ Je sais - je voulais juste battre SVG .
insertusernamehere

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ a raison, ce n'est pas une réponse valable.
Mego

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ si le css a été enregistré en tant que fichier SASS, puisque SASS est un langage de script, serait-il une réponse valable?
fcalderan

6
Oui, le CSS normal est un fichier SASS valide.
ev3commander

16

JavaScript, 140 143 147 151 153 octets

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


Édite

  • Sauvegardé 2 octets en remplaçant 2*i*26par i*52. Merci à Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Sauvegardé 4 octets en refacturant la for-loop. Merci à ETHproductions .
  • Sauvegardé 2 octets en utilisant l' withinstruction -at. Merci à Dendrobium .
  • Sauvegardé 2 octets en transformant incrément en décrément. Merci à Shaun H .
  • Sauvegardé 3 octets en remplaçant fillStyle=["#0055a4","#ef4135"][i]par i?"#ef4135":"#0055a4".

3
2*i*26peut devenir 52*i, non?
Conor O'Brien

7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Bien sûr que si. Merci. C'est bien au-delà de mon heure de coucher.
insertusernamehere

2
Vous pouvez supprimer 2 octets en utilisant la withdéclaration: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
enregistrer un octet: 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 C'est bien. Merci beaucoup.
insertusernamehere

13

R, 59 octets

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

La sortie est affichée:

enter image description here

On peut aussi faire 49 octets avec

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

si vous ne faites pas attention aux axes et aux bordures:

enter image description here


2
Le ratio semble faux. Je pense que vous avez un ratio 2: 3 sur un rectangle unicolore au lieu d’un ratio 3: 2 sur l’ensemble du drapeau.
Fataliser

Le ratio peut être ajusté manuellement en redimensionnant la fenêtre de traçage.
Flodel

3
Pour être éligible, votre inscription doit fonctionner "out of the box". Sinon, n'importe qui peut publier une solution de 6 pixels et dire "Vous pouvez effectuer un zoom manuel".
Sanchises

4
Vous dites «axes», je dis «drapeau».

2
@sanchises: je suis française et je dis f ** k it. LIBERTE!
Flodel

12

Blitz 2D / 3D , 154 108 octets

Cela produit exactement la même chose que l'exemple donné dans la question (à l'exception de l'anti-aliasing sur les bords où les couleurs se rencontrent).

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

La sortie est affichée et ressemble à ceci:

enter image description here


12

Mathematica, 63 94 103 octets

Quand j'ai vu ce défi pour la première fois, j'ai pensé Sweet! Mathematica serait parfait pour cela!jusqu'à ce que je remarque que les fonctions intégrées ont été interdites: '(

Mais attendez! Je peux utiliser des graphiques à barres!

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

(Merci à Martin Büttner pour avoir coupé 5 octets mais en avoir ajouté 16)

Ressemble à ça:

enter image description here

Si vous ajoutez ,Axes->Nonecela ressemble à ceci:

enter image description here

Si vous ne vous souciez pas de la frontière, vous pouvez utiliser ceci: (95 octets)

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

Ressemble à ça:

enter image description here

Sans axes:

enter image description here


3
Axes->None. Vous devriez aussi spécifty AspectRatio->2/3. Renommage RGBColorest simple: r=RGBColor;...r["..."]. Vous pouvez également utiliser la notation préfixe pour enregistrer deux octets supplémentaires r@"#0055a4".
Martin Ender

Si vous n'avez pas besoin du contour, essayez BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. Le rouge semble assez proche.
DavidC

@DavidCarraher Meh, puisque la question spécifie une valeur RVB particulière, celle-ci doit être utilisée exactement.
Martin Ender

Ma recommandation principale était de dessiner deux rectangles, pas trois. Vous avez cependant raison sur Red, techniquement.
DavidC

Les frontières autour des barres n'invalideraient-elles pas cette solution?
LegionMammal978

11

Javascript (ES6) 117 octets

Dessine dans la 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
Pour 'white'je pense qu'il est plus facile à faire: #fff. En outre, les couleurs rouge et bleu doivent correspondre aux couleurs spécifiées dans la spécification
Downgoat

1
Vous pouvez enregistrer quelques octets au i=c=s=[]lieu de, i=0,c=[],s=''après avoir mis à jour les couleurs qui pourraient aider un peu ...
Dom Hastings

1
@ Vɪʜᴀɴ Lors de la production de texte, vous pouvez utiliser les couleurs standard ( redet blue). C'est le 2ème point, en partant du bas. Ceci est dans les spécifications.
Ismael Miguel

@DomHastings Bon conseil, utilisation intelligente de la contrainte. Merci!
George Reith

1
@sysreq Son texte dans la console ... Je n'ai aucun contrôle sur la hauteur de ligne de votre console. C'est 78 caractères de large 52 de hauteur.
George Reith

10

pb , 68 octets

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

Wow, un défi que pb est en fait un peu bon pour! Ce sont peu nombreux et espacés.

Lors de la rédaction de la spécification pour pb, j’avais inclus la sortie colorée principalement comme une blague. Le langage a été nommé d'après un "pinceau", pourquoi ne le ferait-il pas couleur? À part les exemples de programmes, c’est la deuxième fois que je l’utilise. Il est implémenté avec les codes ANSI comme le demande la question.

J'ai utilisé 'M' comme personnage avec lequel écrire parce que c'est assez dense.

Sortie:

J'ai redimensionné cette capture d'écran verticalement afin qu'elle atteigne les deux tiers de sa hauteur, car les lettres ne sont pas carrées. La sortie est 78 par 52, mais la capture d'écran originale semble vraiment fausse.

Avec commentaires et indentation et ordure:

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 vous donnera les dimensions souhaitées pour la sortie du terminal.
Mego

@ Mego Oui, mais je ne suis pas sûr que ce soit autorisé.
undergroundmonorail

La sortie résultante sur xterm dans la police par défaut correspond aux dimensions spécifiées.
Mego

Je me sentirais bizarre de mesurer la taille de la sortie de la console avec autre chose que des "caractères".
undergroundmonorail

1
Lorsque vos personnages sont 1,2 fois plus hauts que larges, ils ne donnent pas de très bons pixels.
Mego

10

C, 115 octets

enter image description here

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

Contient des non imprimables:

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

Pour que ce programme fonctionne, certaines choses doivent être vraies:

  • Le terminal supporte la ESC [48;2;<r>;<g>;<b>mséquence d'échappement "truecolor".
  • Le terminal n'est pas xterm, car la mise en œuvre de xterm ci-dessus produira des couleurs légèrement fausses.
  • Le terminal ignore complètement les caractères NUL.

Cela semble également plus agréable si l’arrière-plan de votre terminal est noir.

Pour modifier la hauteur de l'indicateur, transmettez des arguments de ligne de commande au programme. Pour chaque argument passé, l'indicateur devient plus court d'une ligne. Ce n'est pas un bug, c'est une fonctionnalité!

Sortie:

enter image description here


J'ai eu du mal à le compiler avec gcc(version 5.1.1). Des drapeaux spécifiques sont-ils nécessaires pour compiler? "ac: 1: 10: attention: ISO C99 requiert des espaces après le nom de macro #define c" \ x1b [48; 2;% d;% d;% dm "
steve

1
@Steve est-ce un avertissement notre une erreur?
Functino

1
@Steve Vient de le tester à nouveau, gcc 5.2.1. Pas de drapeaux. Produit 12 avertissements mais fait un binaire fonctionnel.
Functino

excuses - fonctionne très bien - j'ai été dérouté par les avertissements (et le fait que le code semble assez cryptique pour un débutant en C comme moi)
steve

9

MATLAB, 82 79 78 octets

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)

La sortie ressemble à:


1
Quelle version de MATLAB? Ne fonctionne pas sur r2013a car les couleurs doivent être des nombres décimaux compris dans la plage [0,1].
Tom Carpenter

1
La ligne suivante fonctionne fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)et vous enregistre 2 octets. :) J'utiliserais également des points-virgules au lieu de nouvelles lignes pour éviter que des éléments supplémentaires soient imprimés.
Tom Carpenter

1
@TomCarpenter J'ai espacé sur l'échelle de couleurs 0-1, cela fait un petit moment que je n'ai pas eu à spécifier de couleurs. En ce qui concerne les points-virgules / nouvelles lignes, je choisissais la lisibilité à l'écriture sur console, mais j'ai changé ma réponse
costrom

9

Visual Basic + Excel, 618 137 octets

Juste curieux de voir comment cela peut être joué au golf.

EDIT: La curiosité est rassasiée, grâce à @Neil et @JimmyJazzx, 618 octets sont passés à 137 octets

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


1
Enregistrer une macro donne un code terriblement inefficace. Essayez Range("A1:C13").Interior.ColorIndex = 5et Range("G1:I13").Interior.ColorIndex = 3qui semble suffire.
Neil

2
Désolé, c'était Excel 2003 et j'ai oublié d'inclure le ActiveWorkbook.Colorspour spécifier les valeurs RVB exactes. Excel 2007 propose des options de couleur supplémentaires, mais je ne les connais pas au début.
Neil

1
Je reçois 137 octets avec quelques changements rapides. Je pense que vous pouvez réduire cela davantage, mais ce sont les changements faciles. 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

Je reçois 135 avecSub 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 octets

*{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 octet plus court
user2428118

1
en fait, un seul * suffit :) Merci!
Thomas Eschemann

1
+1; Vous pouvez enregistrer un autre octet en supprimant le trailing }.
insertusernamehere

1
Vous pouvez supprimer la première couleur, vous enregistrez 8 octets.
Awashi

Vous pouvez remplacer le dernier 66%avec 0.
Mr_Green

8

Dyalog APL ( 47 44)

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

Résultat:

flag


2
pouvez-vous faire 2*8 11 10?
lirtosiast

1
@ThomasKwa: merci
marinus

8

iKe , 43 octets

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

Ceci est un exemple de programme iKe "tuple brut". Il ne s'agit que d'une description d'un origine ( 0 0), d'une palette ( 3 7#"#0055A4#FFFFFF#EF4135") et d'un bitmap (+52#'&3#26 ). Vous devez insérer une telle description dans une fonction ou utiliser des références à des vues si vous souhaitez l'animer.

La palette est un moyen très simple de créer une série de couleurs CSS, équivalents hexagonaux de la spécification.

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

Si les exigences de couleur étaient moins strictes, nous pourrions utiliser l'une des palettes intégrées d'iKe et économiser un nombre considérable de caractères:

windows@7 0 4

flag

Essayez-le dans votre navigateur .

Modifier:

Enregistré un octet en utilisant une #FFFcouleur CSS courte pour la bande blanche:

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

Si quelqu'un d'autre est intéressé à jouer avec iKe, il y a un manuel sur le dépôt github . voici un autre problème j'ai résolu en utilisant iKe.

Edit 2:

Un octet enregistré avec un moyen plus simple de construire le bitmap:

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

On n'a pas répondu à ma question dans l'OP, mais pour mémoire, si des exigences de couleur plus souples sont autorisées, ce programme aurait 30 octets en utilisant la palette Windows 3.1:

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

flag2

Depuis que ce problème a été signalé, iKe a obtenu une fonctionnalité qui centre automatiquement les textures dessinées sans position, ce qui pourrait économiser 3 octets supplémentaires, mais cela irait à l'encontre des règles:

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

7

Octave, 77 76 octets

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

Affiche l'image:

enter image description here


7

Traitement, 100 octets

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

Affiche ceci: France

(La solution naïve est plus courte que la première.)


Je pense que les commandes de dessin de Processing peuvent dépasser les pixels size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
invisibles

@JohnE Lol, oui je viens de le remarquer.
geokavel

@JohnE Même ma solution super basique est plus courte que la vôtre!
geokavel

haha - on dirait que nous avons tous les deux trop compliqué
JohnE

que diriez-vous d'abuser des instructions de la balance? Cela fonctionne sur sketchpad.cc mais pourrait casser dans le traitement 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 octets

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

Ce qui précède est un hexdump qui peut être inversé avec xxd -r. Alternativement, il peut également être généré avec le script PHP suivant:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

J'assume les paramètres par défaut, car ils sont sans .ini (vous pouvez désactiver votre .ini local avec l' -noption). Produit une image .bmp (288 x 192), qui devrait être redirigée vers un fichier. C'est aussi grand que je peux le faire sans affecter le nombre d'octets.


Exemple d'utilisation

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

Sortie

French Flag


Ces couleurs ne semblent pas correctes. Utilisent-ils les valeurs RVB spécifiées dans la question?
Poignée de porte

@ Doorknob Ils font. À partir de l'octet 26, une palette de couleurs à trois valeurs est définie (bgr): A45500, FFFFFF, 3541EF.
Primo

6

ShaderToy (GLSL), 147 octets

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

Le voir ici

Pas particulièrement excitant. Je suis sûr qu'il y a moyen de jouer au golf davantage; Je vais prendre une fissure quand je rentre à la maison.


3
Le lien redirige vers shadertoy.com/error : /
Quentin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.