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:
- 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
où N
est 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
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 64140; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 42156; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
(0, 35, 149)
,(255, 255, 255)
,(237, 41, 57)
.echo 🇫🇷
pas assez grandRéponses:
CJam,
2322 octetsCe 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.
Comment ça fonctionne
Dans les deux programmes, nous utilisons la séquence d'échappement ANSI
\x9bXYm
- oùX
se trouvent la3
couleur de premier plan et la couleur4
d'arrière-plan, etY
spécifie la couleur à utiliser - pour basculer entre les trois couleurs du drapeau.L'autre programme est similaire.
Sortie
la source
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.
La sortie ressemble à:
Alternativement:
Bash avec les utilitaires OSX, 56
L'
dc
expression:3^26-1
et imprime en ternaire22222222222222222222222222
3^26
. Sortie en ternaire c'est1111111111111111111111111100000000000000000000000000
tr
puis traduit les 210 caractères en 🔵⚪️🔴.yes
affiche cette ligne indéfiniment.sed 26q
arrête la sortie à 26 lignes.la source
Desmos,
3012 octetsEssayez-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.
la source
Python 2, 47 octets
Contient des éléments non imprimables - voici un hexdump (réversible avec
xxd -r
):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:
la source
in [0]
->in[0]
\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.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
personnage est légèrement plus joli, par exempleprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 octets
87 88 121 122 149Enregistrement 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
En utilisant beaucoup d'abus de syntaxe HTML, cela peut être assez court.
Capture d'écran de la sortie:
Ou essayez-le (assurez-vous que votre navigateur prend en charge SVG):
la source
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
fonctionne aussi (non"
), en sauvegardant un octet entier.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.
Afficher l'extrait de code
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):
la source
Bash + ImageMagick,
607773 octets(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: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:
la source
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
au lieu de-sample
; de plus, la barre oblique inverse ne semble pas être nécessaireLaTeX, 139 octets
Merci à @WChargin pour la sauvegarde de 21 octets.
Ceci imprime l’image suivante de 12 cm * 8 cm sur une page A4:
Notez que "Page 1" est également imprimé au bas de la page
la source
asymptote
solution ...s.\newcommand\z[1].\def\z#1
pour 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\input color
\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}
Pyth, 27 octets
Il y a des caractères non imprimables, alors voici un hexdump:
Cela crée un fichier de
o.png
78 pixels de large et de 52 pixels de haut:Explication:
la source
save it as an image o.png
, mais il n'y a pas de ".png" n'importe où?python3 pyth.py code.pyth
, alors vous pouvez le trouver dans le même répertoire.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).
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):
Vérifiez sa validité sur: https://html5.validator.nu/
Impression écran du résultat:
la source
>
?style="..."
cas si c'est ce que vous voulez dans le deuxième exemple.<html>
, non<head>
, non<body>
, non</tr>
, non</td>
et sans fermeture de toutes les balises manquantes.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.TI-Basic,
524442 octets(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:
Si l'ombrage n'est pas valide pour le défi, faites le moi savoir!
Sans les 2 premières lignes, cela ressemble à ceci:
la source
ffmpeg,
110113116117119108100 octetsAfficher, en utilisant ffplay, 100 octets:
Enregistré dans le fichier, en utilisant ffmpeg, 108 octets:
La version actuelle de la commande sera abandonnée avec une erreur, MAIS une seule image ".png" sera émise, comme ci-dessous.
la source
white
place de#ffffff
: les valeurs doivent être identiques.CSS, 127
128144octetsPas besoin d'un autre tag, fonctionne uniquement avec le
body
élément -el.Édite
display:block;
et certains;
.}
.la source
JavaScript, 140
143147151153octetsÉdite
2*i*26
pari*52
. Merci à Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
-loop. Merci à ETHproductions .with
instruction -at. Merci à Dendrobium .fillStyle=["#0055a4","#ef4135"][i]
pari?"#ef4135":"#0055a4"
.la source
2*i*26
peut devenir52*i
, non?with
dé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]
x=(d=document).body.appendChild(d.createElement
canvas).getContext
2d;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 octets
La sortie est affichée:
On peut aussi faire 49 octets avec
si vous ne faites pas attention aux axes et aux bordures:
la source
Blitz 2D / 3D ,
154108 octetsCela 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).
La sortie est affichée et ressemble à ceci:
la source
Mathematica,
6394103 octetsQuand 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!
(Merci à Martin Büttner pour avoir coupé 5 octets mais en avoir ajouté 16)
Ressemble à ça:
Si vous ajoutez
,Axes->None
cela ressemble à ceci:Si vous ne vous souciez pas de la frontière, vous pouvez utiliser ceci: (95 octets)
Ressemble à ça:
Sans axes:
la source
Axes->None
. Vous devriez aussi spéciftyAspectRatio->2/3
. RenommageRGBColor
est simple:r=RGBColor;...r["..."]
. Vous pouvez également utiliser la notation préfixe pour enregistrer deux octets supplémentairesr@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. Le rouge semble assez proche.Javascript (ES6) 117 octets
Dessine dans la console
la source
'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écificationi=c=s=[]
lieu de,i=0,c=[],s=''
après avoir mis à jour les couleurs qui pourraient aider un peu ...red
etblue
). C'est le 2ème point, en partant du bas. Ceci est dans les spécifications.pb , 68 octets
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:
la source
C, 115 octets
Contient des non imprimables:
Pour que ce programme fonctionne, certaines choses doivent être vraies:
ESC [48;2;<r>;<g>;<b>m
séquence d'échappement "truecolor".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:
la source
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 "MATLAB,
827978 octetsLa sortie ressemble à:
la source
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.Visual Basic + Excel,
618137 octetsJuste 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
la source
Range("A1:C13").Interior.ColorIndex = 5
etRange("G1:I13").Interior.ColorIndex = 3
qui semble suffire.ActiveWorkbook.Colors
pour spécifier les valeurs RVB exactes. Excel 2007 propose des options de couleur supplémentaires, mais je ne les connais pas au début.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
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
CSS, 102
110111114octetsla source
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- un octet plus court}
.66%
avec0
.Dyalog APL (
4744)Résultat:
la source
2*8 11 10
?iKe , 43 octets
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.
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:
Essayez-le dans votre navigateur .
Modifier:
Enregistré un octet en utilisant une
#FFF
couleur CSS courte pour la bande blanche: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:
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:
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:
la source
Octave,
7776 octetsAffiche l'image:
la source
Traitement, 100 octets
Affiche ceci:
(La solution naïve est plus courte que la première.)
la source
size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
Ruby,
564745 octetsASCII
la source
PHP, 70 octets
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:J'assume les paramètres par défaut, car ils sont sans .ini (vous pouvez désactiver votre .ini local avec l'
-n
option). 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
Sortie
la source
ShaderToy (GLSL), 147 octets
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.
la source