Dessine le drapeau suisse


46

Tâche: produire le drapeau suisse.

Fête nationale suisse / Fête nationale suisse / Fête nationale suisse / Fiasta naziunala svizra / Fête nationale suisse / Schweizer Bundesfeiertag!

Détails: Le drapeau consiste en une #FFFFFFcroix blanche ( ) sur un #FF0000fond rouge ( ). La croix consiste en un carré 6x6 avec des bras de taille 6x7 collés de chaque côté. La croix est au centre du fond carré 32x32 ayant une distance de 6 unités de chaque côté. ( Source )

La taille de sortie peut être choisie par le participant, mais l'image doit correspondre exactement à ces proportions, ce qui signifie que sa taille doit être un multiple de 32.

Une version minimale ressemblerait à ceci:


1
Dans certaines versions des drapeaux défis, la sortie ASCII en couleur était autorisée, mais vous n'avez pas inclus ascii-art . Juste pour confirmer, la sortie ASCII n'est pas autorisée?
Stephen le

1
À droite, seuls les formats d'image largement connus sont autorisés, ainsi que la sortie à l'écran.
flawr

20
echo 🇨🇭- Je suppose que ce n'est pas autorisé
Digital Trauma Le

Je vois un CH bleu, je ne vois pas pourquoi cela devrait être autorisé.
Flawr

1
@Tutleman Je pense que c'est le cas
Luis Mendo

Réponses:


40

SVG (HTML5), 94 83 82 64 octets

<svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red

2 octets sauvés grâce à @ThePirateBay. Sauvegardé 1 octet grâce à @ATaco. Enregistrement de 18 octets grâce à @CraigAyre indiquant qu'une image au format 32 × 32 était acceptable. Comme l'a souligné @Shaggy, cela suppose que votre arrière-plan par défaut est blanc; ajoutez 22 octets pour un drapeau qui fonctionne sur n’importe quel fond:

<svg><path d=M0,0V32H32V0 fill=red /><path d=M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=#FFF


Pas besoin de fermer le chemin. Vous pouvez économiser 4 octets en laissant le chemin ouvert.

Comme ThePirateBay a dit, le droit >dans votre balise path est optionnel.
ATaco

6
SVG a sa propre "langue de golf"? Oo
ETHproductions

16
Étant habitué à écrire la syntaxe XML, ce code me fait saigner des yeux
Nayuki

3
Pouvez-vous supprimer viewBoxpour la version minimale? <svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
Craig Ayre

31

Code machine x86-16 pour DOS, 43 octets

               ; Draw 32x32 red square
B8 0C 28          mov  ax, 0x0C28   ; AL == color red, AH == set pixel function
B9 00 1F          mov  cx, 31
               DrawBox:
BA 00 1F          mov  dx, 31
               DrawRow:
CD 10             int  0x10
4A                dec  dx
75 FB             jnz  DrawRow
E2 F6             loop DrawBox

               ; Draw the interior white cross
B0 0F             mov  al, 0x0F    ; high byte already set
B1 06             mov  cl, 6       ; high byte already 0
               DrawCross:
B2 0D             mov  dl, 13      ; high byte already 0
               DrawCrossInner:
CD 10             int  0x10        ; plot CX, DX
87 D1             xchg dx, cx
CD 10             int  0x10        ; plot DX, CX
87 D1             xchg dx, cx
42                inc  dx
80 FA 12          cmp  dl, 13+6
75 F2             jne  DrawCrossInner
41                inc  cx
80 F9 19          cmp  cl, 6+(32-6-6)
75 EA             jne  DrawCross

C3                ret

Le code ci-dessus est conçu pour être assemblé en tant que fichier COM, puis exécuté sous DOS. Il appelle les services vidéo du BIOS ROM pour tracer les pixels individuels du drapeau, formant ainsi une représentation 32 × 32 du drapeau suisse dans le coin supérieur gauche de l'écran.

Le code suppose que le mode vidéo est déjà défini sur le mode 0x13, ce qui signifie également qu'il nécessite un affichage VGA. D'autres modes vidéo peuvent être utilisés, mais le format VGA nécessite deux choses: (1) des pixels carrés et (2) une palette par défaut comprenant un vrai 100% rouge ( 0xFF0000) (ce qui signifie que vous n'avez pas à perdre des octets pour changer de palette. couleurs). Avant d'exécuter ce programme, vous devrez donc basculer votre affichage en mode 0x13; le code suivant est tout ce dont vous avez besoin pour faire cela:

mov  ax, 0x13
int  0x10

Le code ne fait aucune autre hypothèse et doit être exécuté sur tout matériel compatible x86 sous un système d'exploitation compatible DOS.

Cependant, le programme se termine immédiatement après avoir dessiné l'indicateur. L'invite DOS est donc normalement réimprimée dans le coin supérieur gauche de l'écran, couvrant ainsi les quelques lignes supérieures de l'indicateur. Par conséquent, si vous voulez vous émerveiller de la véritable sortie, vous devez suspendre / mettre en pause le système avant qu'il ne soit RETuriné. Voici une capture d'écran de ce à quoi cela ressemble, s'exécutant sur une machine virtuelle FreeDOS:

Il serait peut-être possible de jouer au golf plus loin en écrivant des données de pixels directement dans le tampon vidéo, d’autant plus que j’assume déjà le mode 0x13. Je n'ai pas encore essayé. INT 0x10est déjà une instruction assez courte, mais si je peux utiliser les instructions de chaîne sur un octet pour écrire des données de pixels directement dans la mémoire, cela pourrait entraîner une économie de code significative.


Impressionnant! Je ne le vois pas beaucoup, mais quand je le fais, c'est toujours très intéressant
Adrian Zhang

Ravi de voir les fans d'ASM.
Billal Begueradj

Vous pouvez le faire avec trois carreaux de 32 pixels de large itérant sur toutes les lignes. Il utilise plus de données, mais enregistre le nombre d'opérations. Vous pouvez également utiliser trois tuiles de 16 pixels de large pour le côté gauche et effectuer une opération symétrique en inversant le côté gauche.
ATL_DEV

21

MATL , 29 octets

2Y66t&Y"OJQht3$)6thYaQK7hBoYG

Essayez-le sur MATL Online!

Explication

2Y6     % Push predefined literal: 3×3 matrix [0 1 0; 1 1 1; 0 1 0]
6t&Y"   % Repeat each entry 6 times in the two dimensions. Gives an 18×18 matrix
OJQh    % Push [0 1j+1]. Used as an index, this means [0 1 ... end+1]. Indexing
        % is 1-based and modular, so 0 is the same as end
t3$)    % Apply that index in the two dimensions. This extends by 1 entry in 
        % each dimension, so that the arms have length 7. Gives a 20×20 matrix
6thYa   % Pad with 6 zeros in the two dimensions. Gives a 32×32 matrix
Q       % Add 1. The matrix now contains values 1 (will become red) and 2 (white)
K7hBo   % Convert array [4 7] to binary. Gives [1 0 0; 1 1 1], to be used as
        % colormap. First row is red, second is white
YG      % Show image using colormap

17

Java 8, 246 + 42 = 288 octets

Merci à @Aaron pour -64 octets.
-4 octets en sortie dans un fichier asans extension.

import java.awt.*;import java.awt.image.*;
x->{BufferedImage i=new BufferedImage(32,32,1);Graphics g=i.getGraphics();g.setColor(Color.RED);g.fillRect(0,0,32,32);g.setColor(Color.WHITE);g.fillRect(13,6,6,20);g.fillRect(6,13,20,6);javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));}

Expression lamba pouvant être affectée à une méthode d'interface fonctionnelle générant une exception. Crée un fichier image nommé a(un fichier image) dans le répertoire qui exécute ce fichier.

Le code environnant utilisé pour l'exécuter: essayez-le en ligne!

Ungolfed

x->{
    BufferedImage i=new BufferedImage(32,32,1);
    Graphics g=i.getGraphics();
    g.setColor(Color.RED);
    g.fillRect(0,0,32,32);
    g.setColor(Color.WHITE);
    g.fillRect(13,6,6,20);
    g.fillRect(6,13,20,6);
    javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));
}

Résultat

Grille fournie par l'aperçu de l'image IntelliJ IDEA (apparemment).


Vous pouvez supprimer de nombreux octets en modifiant votre fillPolygonappel en deux fillRectappels. Je ne suis pas sûr d'avoir respecté les dimensions, mais je suis arrivé avec g.fillRect(7,13,18,6);g.fillRect(13,7,6,18)ce qui est plus court de 64 octets
Aaron

@Aaron Bon appel, pour une raison quelconque, j'ai pensé que ce serait plus long ... Merci!
Justin Mariner

Vous pouvez nommer le fichier .pngau lieu de a.pnget enregistrer un octet.
user2428118

@ user2428118 Nice, serait-il autorisé à aller plus loin et à juste le nommer a, sans extension? Il peut toujours être ouvert, il suffit simplement de lui indiquer de l'ouvrir dans une visionneuse de photos.
Justin Mariner

1
@ OlivierGrégoire Je pense que c'est trop loin de l'idée de ma solution, mais vous pouvez le poster comme votre propre.
Justin Mariner

16

Excel VBA, 86 85 79 octets

Code

Fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et affiche le drapeau suisse sur la plage [A1:F32]de l' ActiveSheetobjet. Cela fonctionne en commençant par rendre les cellules carrées, puis en traçant la région rouge et enfin en traçant la croix blanche.

Cells.RowHeight=48:[A1:AF32].Interior.Color=255:[G14:Z19,N7:S26].Interior.Color=-1

Notez que les arrangements qui suppriment l'étape consistant à colorer la "croix" du drapeau suisse après la mise en arrière-plan rouge sont en réalité plus longs que la configuration ci-dessus, car ils nécessitent au moins 16 adresses de cellule, qui se coordonnent vers les 8 régions distinctes de la carte. drapeau

-1 octet grâce à @ Greedo pour RowHeight=48plusColumnWidth=2

-6 octets grâce à @ Greedo pour la -1placergbWhite

Sortie

entrez la description de l'image ici


1
Fantastique; mais vous pouvez toujours économiser 6 octets avec Interior.Color=-1au lieu deInterior.Color=rgbWhite
Greedo

@ Greedo, hein, que savez-vous - c'est fantastique. J'avais utilisé rgbWhitesur sa valeur décimale de 16777215pour plus de clarté, je ne savais pas que -1cela aurait le même effet. Merci!
Taylor Scott

1
selon ce lien: ( reddit.com/r/compsci/comments/62x9g9/… ) PowerPoint est Turing complet alors je me demande comment cela pourrait-il être porté à PowerPoint
Suhrid Mulay

13

C ++, SFML, 406 399 394 octets

-2 octets grâce à pdpi
-10 octets grâce à Zacharý

SFML (bibliothèque multimédia simple et rapide) est une bibliothèque C ++ écrite pour faciliter le développement de jeux vidéo et de programmes multimédias

Le code :

#include<SFML\Graphics.hpp>
using namespace sf;int main(){for(RenderWindow t(VideoMode(128,128),"");t.isOpen();){t.clear();RectangleShape r({128.f,128.f});r.setFillColor(Color::Red);t.draw(r);r.setFillColor(Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f});t.draw(r);t.display();for(Event e;t.pollEvent(e);)if(!e.type)t.close();}}

Le drapeau est affiché dans une fenêtre de 128x128. Votre système d'exploitation doit pouvoir afficher une fenêtre 128x128 (ma Win8.1 ne peut pas afficher avec une largeur inférieure)

AVERTISSEMENT : vous voudrez peut-être ajouter ces 2 lignes de code:, t.setFramerateLimit(60);t.setVerticalSyncEnabled(true);afin que votre CPU ne chauffe pas lorsque vous exécutez le code. Je ne les ai pas mis dans le code original pour des raisons de golf.


Vous pouvez réduire cela un peu en remplaçant vos débuts par des fors, et en initialisant t et e là-bas: int main(){for(sf::RenderWindow t(sf::VideoMode(128,128),"");t.isOpen();){t.clear();sf::RectangleShape r({128.f,128.f});r.setFillColor(sf::Color::Red);t.draw(r);r.setFillColor(sf::Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f });t.draw(r);t.display();for(sf::Event e;t.pollEvent(e);)if(e.type == 0)t.close();}}
pdpi

En outre, vous pouvez enregistrer deux octets en supprimant les espaces: e.type == 0=> e.type==0, voire même !e.type(ne vous souvenez pas de la priorité). 24.f }=>24.f}
Zacharý

Oh, et c'est using namespace sf;possible?
Zacharý

12

Braindraw, 227 octets (non concurrents) (mis à jour pour fonctionner réellement)

Version non-golfée (241 octets)

r<<^++++++++[-^++++v]^[->>[>]>++++++++[-<++++>]<[<]<]>>[[-vv[v]-[^]^]>]vv<[<]>>>>>>>>>>>>>>vvvvvvg<<^^++++++[->>[>]>+++++[-<++++>]<[<]<]>>[[-vv[v]b-g-[^]^]>]<vv[<]><<<<<<<vvvvvvv<<^^++++++[-vv[v]++++++++++++++[^]^]vv[[->>[>]b[+]-g[+]-[<]<]v]

Version légèrement golfée (227 octets)

r<<^++++++++[-^++++v]^[->>[>]>++++++++[-<++++>]<[<]<]>>[[-vv[v]-[^]^]>]vv<[<]g>>>>>>>>>>>>vvvv++++++[->>[>]>+++++[-<++++>]<[<]<]>>[[-vv[v]b-g-[^]^]>]<vv[<]<<<<<<vvvvv<<++++++[-vv[v]++++++++++++++[^]^]vv[[->>[>]b[+]-g[+]-[<]<]v]

Braindraw est un langage de programmation de ma propre conception. À partir de 15h08 aujourd'hui, j'ai un interprète qui travaille et j'ai vérifié que le programme fonctionne correctement. Cependant, l'interprète n'existait pas avant le début de la compétition, je ne suis donc pas en compétition.

Braindraw est identique à Brainf ***, à la différence qu’il fonctionne sur trois tableaux bidimensionnels plutôt que sur un tableau unidimensionnel. Ces tableaux s'appellent r, g et b et servent de canaux de couleur rouge vert et bleu. L'opérateur r déplace le pointeur sur le canal rouge, etc. etc. Up is ^, down v.


9
J'ai hâte de voir un interprète pour ça, ça pourrait être amusant d'essayer
Darren H

1
C'est certainement une idée amusante, j'attends un interprète avec impatience! (Techniquement, nous n'autorisons que les langues qui ont été implémentées, et nous considérons l'interprète comme leur définition.)
flawr

Est-il exact que vous n'émettez pas explicitement quoi que ce soit, mais que vous produisez simplement l'intégralité du "canevas"? Pensez-vous que la toile est infinie?
flawr

Dans re: no interpreter, je suppose que cela signifie que mon entrée est non concurrente. Tant pis. Mais oui, ce programme n’a pas de sortie en soi, l’espace informatique est affiché pendant et après l’exécution du programme. La toile est théoriquement infinie, mais dans la mise en œuvre, je vais probablement en faire une largeur fixe assez large, comme peut-être 512x512
benzène.

Ce langage semble capable de kolmogorov défis de l'image de complexité. Et travaillez-vous actuellement sur un interprète?
Zacharý

10

TI-BASIC (TI-84 Plus C (S) E uniquement), 58 octets

:For(A,0,31
:For(B,0,31
:Pxl-On(A,B,RED
:End
:End
:For(A,6,25
:For(B,13,18
:Pxl-Off(A,B
:Pxl-Off(B,A
:End
:End

C'est une réponse géniale. Je viens de créer un compte pour le faire voter. TI-BASIC is great
Zags

1
Oh, quel troisième paramètre de luxe de Pxl-On a maintenant ... ça me fait pleurer seulement après avoir été monochrome :(
Ray

10

Mathematica, 83 octets

R=Rectangle;Graphics[{Red,{0,0}~R~{32,32},White,{6,13}~R~{26,19},{13,6}~R~{19,26}}]

la prochaine est de @ ASCII seulement (je pensais que c'était une blague mais ça marche!)

Mathematica, 23 octets

"CH"~CountryData~"Flag"

-10 octets de @Jonathan Frech


4
Mathematica n'a pas intégré le drapeau suisse?
CJ Dennis

4
CountryData["Switzerland","Flag"]mais il pourrait ne pas avoir les bonnes proportions
ASCII-seulement

6
Mathematica a une fonction intégrée pour tout, mais ça?
sergiol

10
"Switzerland"~CountryData~"Flag"vous sauve encore plus
A Simmons

1
"CH"~CountryData~"Flag"prend seulement 23 octets.
Jonathan Frech

9

HTML + CSS, 15 + 117 octets = 132 octets

Utiliser un wrapper flexbox avec un inset box-shadow.

b{display:flex;box-shadow:red 0 0 0 6px inset;padding:2px;width:28px;flex-wrap:wrap}a{border:solid red 4px;margin:3px
<b><a><a><a><a>


HTML + CSS, 18 + 139 137 122 octets = 140 octets

Réponse précédente en utilisant borderet un wrapper flexbox intermédiaire avec négatif margin.

i,b,a{display:inline-flex}i{border:solid red 6px}b{margin:-4px;width:28px;flex-wrap:wrap}a{border:solid red 4px;margin:3px
<i><b><a><a><a><a>


7

GraphicsMagick (?), 96 octets

gm convert -size 32x32 xc:red -fill #fff -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" 1.bmp

Vous ne savez pas comment jouer au golf avec GM (cela devrait-il être considéré comme une langue?). Aussi pas sûr de savoir comment compter les octets ici ...

Avec GM installé, tapez le code donné dans Windows cmd, vous obtiendrez une image avec le nom 1.bmp. Vous voudrez peut-être remplacer les guillemets par des guillemets simples si vous utilisez bash (cela devrait fonctionner, mais je ne l’avais pas testé).

Merci à Digital Trauma. utilisez seulement une -drawsauvegarde de 8 octets


Je ne sais pas si c'est la même chose dans GraphicsMagick, mais avec ImageMagick, vous pouvez mettre les deux rectangles dans la même -drawchaîne:convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
Digital Trauma

@ DigitalTrauma c'est pareil. édité.
tsh

7

JavaScript + HTML, 99 + 13 = 112 octets

2 octets enregistrés grâce à user2428118
2 octets enregistrés grâce à Matheus Avellar

JSFiddle

with(c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),clearRect(6,13,20,6),clearRect(13,6,6,20)
<canvas id=c>


Pure JavaScript, 194 129 octets

JSFiddle

with(document.write`<canvas id=c>`,c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),clearRect(6,13,20,6),clearRect(13,6,6,20)


2
Je crois que vous devez le faire à partir de zéro.
Stephen le

@StepHen. Ok, je l'ai ajouté aussi.

1
... vous devez l'inclure dans le décompte
ASCII uniquement

@ ASCII uniquement. Inclus.

1
Pour référence future, <canvas>vous pouvez inclure le code HTML directement dans votre réponse chaque fois que vous en avez besoin . Voir codegolf.stackexchange.com/a/136972/47097
darrylyeo

6

JavaScript (ES6) en HTML4 (?), 178 176 octets

document.write('<table cellspacing=0>'+[...Array(32)].map((_,y,p)=>p.map((_,x)=>`<td bgcolor=${x>5&&x<26&&y>12&&y<19||y>5&&y<26&&x>12&&x<19?'#fff':'red'}>`).join``).join`<tr>`)

Oui! Nous n'avons pas besoin <canvas>ni <svg>ni même <img>!

Grâce à Justin Mariner, économisez 2 octets.


5

Löve2D , 139 138 octets

l=love g=l.graphics c=g.setColor r=g.rectangle f="fill"w=255 l.draw=loadstring"c(w,0,0)r(f,0,0,32,32)c(w,w,w)r(f,13,6,6,20)r(f,6,13,20,6)"

Un octet enregistré grâce à ThePirateBay

Ungolfed

function love.draw()
    love.graphics.setColor(255,0,0)
    love.graphics.rectangle("fill",0,0,32,32)
    love.graphics.setColor(255,255,255)
    love.graphics.rectangle("fill",13,6,6,20)
    love.graphics.rectangle("fill",6,13,20,6)
end

5

Python 3 , 190 octets

Enregistrez la sortie sous image.xpmet ouvrez-la avec votre éditeur de texte préféré.

r=range;print('! XPM2\n32 32 2 1\nr c #FF0000\nw c #FFFFFF\n');d=[bytearray(b'r'*32)for _ in r(32)]
for i in r(20):
 for j in r(6):d[i+6][j+13]=d[j+13][i+6]=119
print(b'\n'.join(d).decode())

Essayez-le en ligne!

Sortie:

! XPM2
32 32 2 1
r c #FF0000
w c #FFFFFF

rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrwwwwwwwwwwwwwwwwwwwwrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrwwwwwwrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Je devais enlever la 5ème ligne vide pour l'ouvrir avec gimp sur linux.
Tim

5

Perl 5 , 184 octets

Code de 176 octets + 8 pour -Mutf8 -p.

Je ne suis pas tout à fait sûr que cela soit conforme aux besoins, il faut que les entrées vides soient fournies conformément à ce méta-post , qui ne fonctionne pas sur TIO et fournit donc une nouvelle ligne (non utilisée). La sortie est au terminal et ressemble à ceci:

entrez la description de l'image ici

Les proportions doivent être à l'échelle d'un espace de caractère constitué de deux «pixels» verticaux.

%a=qw(R 101 W 107 A 101;97 B 91;107);$_=R.($a="32 
"x3).($b="13 W6 R13 
"x3)."6 A7▄W6 A7▄"."R6 
6 W20 "x2 ."R6 
6 B7▄W6 B7▄R6 
$b$a";s/\d+(.)/$1x$&/ge;s/\pL/[$a{$&}m/g

Essayez-le en ligne!

Vous pouvez prévisualiser la sortie en copiant à partir de TIO et en la collant ici (cela affiche les caractères de contrôle lorsque vous survolez l'élément) .


5

GFA BASIC (Atari ST), 62 octets

Une liste modifiée manuellement au format .LST. Toutes les lignes se terminent par CR, y compris la dernière.

DEFFILL2
PBOX0,0,31,31
DEFFILL0
PBOX13,6,18,25
PBOX6,13,25,18

Développé et commenté:

DEFFILL 2         ! set fill color: default system color #2 is red (&H700)
PBOX 0,0,31,31    ! draw the red square
DEFFILL 0         ! set fill color: default system color #0 is white (&H777)
PBOX 13,6,18,25   ! draw a vertical white rectangle
PBOX 6,13,25,18   ! draw a horizontal white rectangle

Sortie

La sortie est 32x32.

Sortie GFA

NB: Il s’agit bien de la couleur «blanche», bien que celle-ci ait un aspect gris sur l’émulateur (et sur la réalité, à moins que la luminosité ne soit trop élevée).


5

R, 171 140 octets.

x = rep(c(6,13,19,26,19,13),e=2)
l=c(0,32)
par(bg="red",mar=0*1:4)
plot(0,0,'n',l,l,xaxs="i",yaxs="i")
polygon(x,c(x,x)[4:15],c="white",b=0)

(un peu) ungolfed:

x <- rep(c(6,13,19,26,19,13),each=2)
y <- c(x,x)[4:15] # index by 3 positions
par(bg="red",mar=c(0,0,0,0)) # prepare the plot space
plot(0,type='n', xaxs="i",yaxs="i",xlim=c(0,32),ylim=c(0,32))
polygon(x,y,col="white",border=0)

Merci à @gregor pour avoir économisé quelques octets

Exécuter!


1
Bienvenue sur le site! :)
DJMcMayhem

Agréable! Vous pouvez économiser pas mal d’octets avec une correspondance partielle des noms d’argument: e=2au lieu de each=2, tau lieu de type, cpour col, bpour border. Et 0*1:4est plus court que c(0,0,0,0).
Gregor

En fait, vous pouvez vous en tirer avec l’appariement positionnel sur plot: plot(0,0,'n',l,l,xaxs="i",yaxs="i")(l’attribution m="i"vous coûte réellement un octet). Avec tout cela, ça descend à 141 octets.
Gregor

J'ai complètement oublié l'appariement partiel. Merci!
Alex Axthelm

Couple plus d'octets: let les xlim/ ylimne sont pas nécessaires, juste plot(0:32,0:32,...). J'ai également adapté votre approche et l'ai réduite à 117 ici, en utilisant rectau lieu depolygon .
Gregor

5

Octave, 105 octets 73 octets

Remarque: les sauts de ligne ajoutés pour plus de clarté ne sont pas inclus dans le nombre d'octets.

x(32,32,3)=0;
x(:,:,1)=1;
x(7:26,14:19,:)=1;
x(14:19,7:26,:)=1;
imshow(x*255)

EDIT: merci à flawr pour avoir économisé pas mal d’octets!

Voici le résultat sur octave-online.net, grâce aux sanchises

Résultats


Je ne suis pas sûr pour Octave, mais dans MATLAB, cela devrait marcher comme suit:x(32,32,3)=0; x(:,:,1)=1; x(7:26,14:19,:)=1; x(14:19,7:26,:)=1; imshow(x*255)
flawr

BTW: Bienvenue à PPCG !!!
flawr

Octave-online.net montre des images.
Sanchises

5

GIF, 97 octets

GIF87a    ð  ÿ  ÿÿÿ,         @„©Ëí£œ´Ú;ƒÞXmÞ!ŸŠcyŒj¨,àZê<Cô
:8nïtï‹é‚BJ1tì$1ËKSvb=_ÔªõŠe  ;

Pas cher et lourd d'octets, mais ça vaut le coup.

EDIT: Certains caractères ne sont pas dans le code ci-dessus, voici une boîte à copier pour l'hexdump du GIF.

EDIT: compressé jusqu'à 97 octets avec l'outil en ligne.


1
Il semble que certains caractères non imprimables aient été supprimés de votre extrait de code. Peut-être essayer de poster un vidage d'hex

18
Comment prononcez-vous la langue?
Oliver

1
@Oliver ZHAIF
Neil

1
Gimp produit un fichier GIF qui semble identique dans seulement 95 octets (moins que beaucoup d'autres solutions). En voici un extrait hexadécimal.
Armin Rigo

6
Depuis quand GIF est-il un langage de programmation?
Adám

4

HTML + JavaScript (ES6), 13 + 112 = 125 octets

C=c.getContext`2d`
C[s='fillStyle']='red'
C[r='fillRect'](0,0,32,32)
C[s]='#fff'
C[r](6,13,20,6)
C[r](13,6,6,20)
<canvas id=c>

HTML + JavaScript (ES6), 13 + 114 = 127 octets

with(c.getContext`2d`)fillStyle='red',fillRect(0,0,32,32),fillStyle='#fff',fillRect(6,13,20,6),fillRect(13,6,6,20)
<canvas id=c>


J'ai volé votre approche rectangle et l'amélioré à 117 octets en utilisant clearRect, j'espère que ça vous va?

C'est intelligent, mais malheureusement, le PO indique que les pixels transparents ne sont pas autorisés. codegolf.stackexchange.com/questions/136927/draw-the-swiss-flag/…
darrylyeo

En fait, il est blanc. Par défaut, toutes les pages Web ont un fond blanc et le drapeau est transparent, mais il s’agit simplement d’une définition interne de la transparence. La définition externe de la transparence serait si les pixels de cette région (blanc plus) pouvaient changer de couleur dans certaines conditions (ou pouvaient être définis de manière aléatoire). Cependant, comme j'utilise à la fois HTML et JavaScript, le résultat final est le drapeau rouge avec une croix blanche . Vous ne pouvez pas considérer la toile et l'arrière-plan séparément. La manière dont la toile est affichée à l'arrière-plan est bien définie et le résultat contient toujours des définitions de croix en blanc.

J'espère que c'est un peu plus clair maintenant, je veux dire que vous pouvez ne pas être d'accord, mais si vous y réfléchissez vraiment, je suis sûr que vous trouverez ma réponse pleinement conforme aux exigences de OP.

@ThePirateBay assez juste.
darrylyeo

4

C # 265/266 209 octets

 using System;using c=System.Console;class P{static void Main(){for(int i=0,j;i<32;i++){for(j=0;j<32;j++){if((6<i&&i<26&&j>13&&j<19)||(6<j&&j<26&&i>13&&i<19))c.BackgroundColor=ConsoleColor.White;else c.BackgroundColor=ConsoleColor.Red;c.Write(" ");}c.WriteLine();}}}     

J'ai écrit des caractères "espace" dans la console tout en changeant la couleur de fond. Mais si vous pensez qu'il est trop grand et que vous comptez un seul caractère comme 8 x 16 pixels, vous doublez simplement les valeurs proches de "j" comme ceci (+ 1 octet et + c.ReadKey();pour qu'il s'arrête):

  using System;using c=System.Console;class P{static void Main(){for(int i=0,j;i<32;i++){for(j=0;j<64;j++){if((6<i&&i<26&&j>26&&j<38)||(12<j&&j<52&&i>13&&i<19))c.BackgroundColor=ConsoleColor.White;else c.BackgroundColor=ConsoleColor.Red;c.Write(" ");}c.WriteLine();} c.ReadKey(); }}     

56 octets sauvegardés grâce à TheLethalCoder

 namespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(""))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(j++<26&i>13&i<19&6<j​)?15:12);}}}

209 octetsnamespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(" "))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(6<j&j++<26&i>13&i<19)?15:12);}}}
TheLethalCoder

4

Tikz, 145 143 octets

\documentclass[tikz]{standalone}\begin{document}\tikz{\def~{)rectangle(}\fill[red](,~33,33);\fill[white](7,14~27,20)(14,7~20,27)}\end{document}

Ici c'est "non-golfé"

\documentclass[tikz]{standalone}
\begin{document}
\tikz{
\def~{)rectangle(}
  \fill[red](,~33,33);
  \fill[white](7,14~27,20)(14,7~20,27)
}\end{document}

Ici c'est ungolfé un peu plus

\documentclass[tikz]{standalone}
\begin{document}
\tikz{
  \fill[red](1,1)rectangle(33,33);
  \fill[white](7,14)rectangle(27,20)(14,7)rectangle(20,27)
}\end{document}

Cela fait 3 rectangles un grand rouge et deux plus petits blancs pour le plus.

Voici à quoi ça ressemble. Ça n'a pas vraiment l'air différent des autres.

drapeau


J'ai mis un golf documentclass sur github il y a quelques semaines. et il ne semble y avoir aucune exigence de fond de fenêtre. Avec cela \documentclass{g}\input tikzdevrait travailler pour sauver 5B. Vous pouvez probablement économiser davantage en travaillant dans TeX , même avec TikZ
Chris H

4

R, 109 octets

par(mar=0*1:4,bg=2,xaxs="i",yaxs="i")
frame()
rect(a<-c(6,13)/32,rev(a),b<-c(26,19)/32,rev(b),c="white",b=NA)

Utilisé framepour éviter de prédéfinir un tracé, mais la région de tracé par défaut est définie sur l'intervalle [0,1] au lieu de [0,32]. Utilise également le fait qu'il rectest vectorisé. La taille par défaut de la fenêtre de traçage est 7 po x 7 po. Il génère les éléments suivants:

Drapeau suisse dans la fenêtre de traçage

R, 125 octets

png()
par(mar=0*1:4,bg=2,xaxs="i",yaxs="i")
frame()
rect(a<-c(6,13)/32,rev(a),b<-c(26,19)/32,rev(b),c="white",b=NA)
dev.off()

La valeur par défaut pour pngest un carré de 480x480 pixels. La sortie est le fichier png suivant:

Drapeau suisse


4

R, 112 octets

par(bg=2,mar=0*1:4)
plot(0:32,0:32,'n',xaxs="i",yaxs="i")
rect(c(6,13),c(13,6),c(26,19),c(19,26),c="white",b=NA)

Cependant, pour garantir les proportions, nous avons besoin de 5 octets supplémentaires pour un total de 117:

par(bg=2,mar=0*1:4)
plot(0:32,0:32,'n',xaxs="i",yaxs="i",as=1)
rect(c(6,13),c(13,6),c(26,19),c(19,26),c="white",b=NA)

Inspiré par la réponse d’ Alex Axthelm et merci à Rift d’avoir économisé quelques octets supplémentaires.


3
vous pourriez économiser 4 octets changer bg="red"à ce bg=2qui est la même dans la palette par défaut
Rift

4

Postscript, 301 286 187 octets

/m{moveto}def
/s{setrgbcolor}def
/r{rlineto}def
/c{closepath fill}def
1 0 0 s
0 0 m
0 320 r
320 0 r
0 -320 r
c
1 1 1 s
130 60 m
60 0 r
0 200 r
-60 0 r
c
60 130 m
0 60 r
200 0 r
0 -60 r c

Merci à l'éditeur anonyme qui a suggéré une réduction de 99 octets!


Juste pour vous dire que quelqu'un a soumis une modification de golf à ce message. Selon notre politique, il a été rejeté, mais vous pouvez envisager de mettre en œuvre certaines des modifications.
Rɪᴋᴇʀ

3

Rouge , 79 octets

Code:

view[base 32x32 red draw[fill-pen white pen off box 6x13 26x19 box 13x6 19x26]]

Résultat:

fenêtre

Explication:

view [              ; activate view engine
base 32x32 red      ; draw a 32 by 32 red box as base
 draw [             ; draw on top of the base
  fill-pen white    ; fill color is white
  pen off           ; turn off outline, alternatively could use white
  box 6x13 26x19    ; draw a horizontal rectangle, specified as 2 corners XxY
  box 13x6 19x26    ; draw vertical rectangle
]]

3

Bitmap, 160 octets

Voici un bitmap avec une profondeur de couleur de 1 bit, utilisant une définition de couleur de 24 bits. Les six derniers octets de la deuxième ligne constituent la palette et suivent le tableau de pixels. Tous les quatre octets contiennent une rangée entière de pixels.

42 4D A0 00 00 00 00 00 00 00 20 00 00 00 0C 00
00 00 20 00 20 00 01 00 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 03 FF FF C0 03 FF FF C0 03 FF FF C0
03 FF FF C0 03 FF FF C0 03 FF FF C0 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00
00 07 E0 00 00 07 E0 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

J'ai essayé de tronquer les zéros de fin, mais les visualiseurs d'images ont besoin de suffisamment de pixels pour toute la zone de travail.

Swiss.bmp


3
"Des suggestions où je peux sauvegarder des fichiers arbitraires de manière permanente?" - sur GitHub.

1
Pouvez-vous utiliser le codage RLE?
Neil

1
Haha, vous avez 1up'd mon exemple GIF.
Adrian Zhang

1
Je pense que ce n'est pas un langage de programmation valide. IFAICT, BMP ne peut ni vérifier l’ampleur, ni ajouter de chiffres.
Adám

3
Veuillez noter que nous autorisons les soumissions ne faisant pas partie du langage de programmation conformément à ce consensus . Cette soumission convient donc parfaitement. (Et l'OMI est une bonne référence à avoir.)
mardi

3

Python 2, 92 91 89 octets

r,w=' \0\0',' '*3
A,B=192*r,(13*r+6*w+13*r)*7
print"P6 "+"32 "*3+A+B+(6*r+20*w+6*r)*6+B+A

Sortie en ppm binaire, utilisation:

python golf_swiss.py > swiss.ppm

L'augmentation de la profondeur de couleur m'a permis d'utiliser l'espace pour une valeur maximale


3

Tcl / Tk, 94

Si elle fonctionne sur le shell interactif, on peut abrégez canvasà canet gridàgri

gri [can .c -bg red -w 32 -he 32]
lmap R {{8 15 28 21} {15 8 21 28}} {.c cr r $R -f #FFF -w 0}

Tcl / Tk, 98

Si elle fonctionne sur le shell interactif, on peut abrégez canvasàcan

grid [can .c -bg red -w 32 -he 32]
.c cr r 8 15 28 21 -f #FFF -w 0
.c cr r 15 8 21 28 -f #FFF -w 0

Tcl / Tk, 101

pack [canvas .c -bg red -w 32 -he 32]
.c cr r 8 15 28 21 -f #FFF -w 0
.c cr r 15 8 21 28 -f #FFF -w 0

entrez la description de l'image ici

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.