Tapis et aéroport


17

En 2015, l'aéroport international de Portland a commencé le remplacement de leur tapis emblématique . Je veux que vous écriviez un programme pour dessiner leur ancien tapis en aussi peu d'octets que possible.

Le tapis:

Une tuile

Caractéristiques

  • Voici un lien vers une image pdf évolutive d'une tuile. Votre sortie doit correspondre aux dimensions relatives et à l'emplacement de cette image.

  • Toutes les couleurs de votre image finale doivent se trouver à moins de 15 de chaque valeur RVB de l'image spécifiée. Ceux-ci sont énumérés ci-dessous pour votre commodité.

                Red   Green Blue
    Teal:       0,    168,  142
    Magenta:    168,  108,  185
    Orange:     247,  58,   58
    Light Blue: 90,   166,  216
    Dark Blue:  0,    77,   117
    
  • Votre sortie doit être d'au moins 150x150 pixels et doit être carrée. Si vous choisissez de sortir dans un format évolutif comme une image vectorielle, vous devez faire correspondre l'image exactement.

  • Vous pouvez sortir l'image dans n'importe quel format d'image préexistant.

  • Il s'agit de , vous devez donc viser à réduire le nombre d'octets dans votre code.



@Hexaholic Je ne pense pas, donc je frappais au hasard sur wikipedia et j'ai frappé la page. Cependant, je l'ai peut-être également vu sur reddit avant.
Post Rock Garf Hunter

1
Doit-il s'agir d'une image à deux dimensions ou pourrait-il être quelque chose comme un modèle vu sous un angle spécifique?
devRicher

Réponses:


9

HTML pur, 873 octets

<table width=152 height=152 bgcolor=#0a8><tr><td colspan=7><td bgcolor=#5AD><tr><td><td bgcolor=#057><td colspan=5><td bgcolor=#5AD><tr><td><td><td bgcolor=#057><td colspan=4><td bgcolor=#5AD><tr><td><td><td><td bgcolor=#057><td><td><td><td bgcolor=#5AD><tr><td colspan=7><td bgcolor=#057><td><td><td bgcolor=#057><tr><td colspan=7><td bgcolor=#057><td><td bgcolor=#057><tr><td colspan=7><td bgcolor=#057><td bgcolor=#057><td><td><td><td bgcolor=#F33><td bgcolor=#F33><td bgcolor=#F33><tr><td colspan=6><td bgcolor=#F33><td bgcolor=#057><td colspan=7 bgcolor=#057><tr><td bgcolor=#A6B><td bgcolor=#A6B><td bgcolor=#A6B><td bgcolor=#A6B><td bgcolor=#A6B><td bgcolor=#A6B><td bgcolor=#A6B><td rowspan=6 bgcolor=#057><tr><td><tr><td><tr><td colspan=11><td bgcolor=#057><tr><td colspan=12><td bgcolor=#057><tr><td colspan=13><td bgcolor=#057><tr><td colspan=7><td bgcolor=#057>

HTML + CSS, 625 octets

#l{background:#5AD}th{background:#057}#o{background:#F33}#m>td{background:#A6B
<table width=152 height=152 bgcolor=#0A8><tr><td colspan=7><td id=l><tr><td><th><td colspan=5><td id=l><tr><td><td><th><td colspan=4><td id=l><tr><td><td><td><th><td><td><td><td id=l><tr><td colspan=7><th><td><td><th><tr><td colspan=7><th><td><th><tr><td colspan=7><th><th><td><td><td><td bgcolor=#F33><td bgcolor=#F33><td bgcolor=#F33><tr><td colspan=6><td bgcolor=#F33><th><th colspan=7><tr id=m><td><td><td><td><td><td><td><th rowspan=6><tr><td><tr><td><tr><td colspan=11><th><tr><td colspan=12><th><tr><td colspan=13><th><tr><td colspan=7><th>


9

Tikz, 725 693 681 671 octets

\documentclass{standalone}\usepackage{xcolor,tikz}\begin{document}\tikz[line width=20,every node/.style={minimum size=20}]{\definecolor{t}{RGB}{0,168,142}\definecolor{m}{RGB}{168,99,185}\definecolor{o}{RGB}{247,58,58}\definecolor{b}{RGB}{90,166,216}\definecolor{d}{RGB}{40,77,117}\fill[t](-7.5,-7.5)rectangle(7.5,7.5);\draw(-1,0)node[fill=o]{};\foreach\x in{1,...,7}{\draw(-\x,-1)node[fill=m]{};\draw(0,\x)node[fill=b]{};}\foreach\x in{1,...,3}{\draw(\x,\x)node[fill=d]{};\draw(3+\x,-3-\x)node[fill=d]{};\draw(-3-\x,3+\x)node[fill=d]{};\draw(4+\x,1)node[fill=o]{};}\draw[d](.65,0)--(7.35,0);\draw[d,dash pattern=on20off8.5on162.5off8.5](0,-7.35)--(0,3.35);}\end{document}

Essayez-le en ligne!

Explication

Une bonne partie du code est un wrapper:

\documentclass{standalone}\usepackage{xcolor,tikz}\begin{document}\tikz{...}\end{document}

Il s'agit d'une légère variation de l'emballage Tikz standard en ce sens qu'il a également la ligne \usepackage{xcolor}afin que nous puissions créer les couleurs correctement.

La première chose à faire est de line width=20,every node/.style={minimum size=20}]définir les lignes et les nœuds à la bonne taille.

Une fois cela fait, nous définissons les couleurs que nous utiliserons pour les différentes parties de l'image:

\definecolor{t}{RGB}{0,168,142}\definecolor{m}{RGB}{168,99,185}\definecolor{o}{RGB}{247,58,58}\definecolor{b}{RGB}{90,166,216}\definecolor{d}{RGB}{40,77,117}

Maintenant que tout est en place, nous peignons l'arrière-plan de notre toile turquoise:

\fill[t](-7.5,-7.5)rectangle(7.5,7.5);

(Je n'inclurai pas une image de cela parce que c'est juste un carré bleu sarcelle, mais je vais inclure des images de chaque étape)

Le premier nœud que nous ajoutons est le nœud orange juste à gauche du centre du canevas.

\draw(-1,0)node[fill=o]{};

Une orange en mer

Nous allons maintenant dessiner les nœuds bleu clair et magenta. Il y a 7 nœuds bleus et 4 nœuds bleus, mais nous pouvons dessiner des nœuds supplémentaires qui seront recouverts par des lignes plus tard, donc nous en tirerons 7 de chaque.

\foreach\x in{1,...,7}{
    \draw(-\x,-1)node[fill=m]{};
    \draw(0,\x)node[fill=b]{};
}

Chemins bifurqués

Maintenant, nous allons dessiner tous les groupes de 3 points en utilisant une seule \foreachboucle

\foreach\x in{1,...,3}{\draw(\x,\x)node[fill=d]{};\draw(3+\x,-3-\x)node[fill=d]{};\draw(-3-\x,3+\x)node[fill=d]{};\draw(4+\x,1)node[fill=o]{};}

Points épars

Maintenant, nous dessinons la bonne ligne. Cette ligne sera une simple ligne avec des décalages de .35dans chaque direction pour correspondre à la taille d'un nœud.

\draw[d](.65,0)--(7.35,0);

Collision

Maintenant, nous devons dessiner les lignes et les carrés bleu foncé sur l'axe des x. Nous les dessinerons avec une ligne en utilisant un motif de tiret personnalisé.

Ce motif est [dash pattern=on20off8.5on162.5off8.5]Cela crée un carré avec une longue queue solide. Notre ligne commencera par le bas et ne couvrira pas tout à fait 2 cycles du motif.

\draw[d,dash pattern=on20off8.5on162.5off8.5](0,-7.35)--(0,3.35);

Final

Et maintenant, nous avons terminé.


Pouvez-vous utiliser des nombres pour représenter les couleurs RVB dans Tikz, au lieu de taper les décalages RVB?
Yytsi

@TuukkaX Je pense que oui mais je n'ai pas pu le comprendre. Si vous savez comment je serais reconnaissant d'être éclairé.
Post Rock Garf Hunter

Je ne connais pas du tout Tikz, donc je ne peux pas m'en empêcher :( Cependant, si j'ai bien compris votre règle concernant "à moins de 15 de chaque RVB", vous pouvez passer de 108 à 99, car l'erreur est inférieure à 15.
Yytsi

@TuukkaX Merci!
Post Rock Garf Hunter

L'utilisation \definecoloravec la HTMLspécification (plutôt que RGB) vous permet de spécifier des couleurs en utilisant hex.
Julian Wolf

6

fichier PNG littéral, 283 , 234 227 octets

ÉDITER : Utilisation du service de compression d'images en ligne https://compress-or-die.com/ , cela a diminué de 7 octets.

albn @ alexhi

j:~/tmp$ ls -l carpet3.png
-rw-r--r-- 1 albn albn 227 15. Feb 12:01 carpet3.png
albn@alexhij:~/tmp$ base64 carpet3.png 
iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLn3Ojpapthl
S7nNAAAAj0lEQVR4Ae3ThRHCQBQGYVqgBVq4Fui/Jt4ILks8/80uLvkyOTlkd67EILHojtWEyxQT
Sw6uFS5TTCw/uFa+TDGx/PjS3z+KiS2GcRtgzIqJdboDPomteniCxMTyatXtMiExMcB22amCJ7wG
MbHpBWBiYmJiYmJwAjGx/ncAn0VMrP8dwL+KieXHFyImltoF6oWZiblRTNQAAAAASUVORK5CYII=

tapis3.png

Les 227 octets sont la taille réelle du fichier binaire Carpet.png. Lorsqu'il est codé en base64, comme indiqué dans le bloc cité ci-dessus, il est plus long de quelques octets (308 octets). Encapsuler cela dans un extrait html qui rend l'image immédiatement ajoutera quelques autres octets:

HTML, 414 , 343 , 336 octets

<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLn3OjpapthlS7nNAAAAj0lEQVR4Ae3ThRHCQBQGYVqgBVq4Fui/Jt4ILks8/80uLvkyOTlkd67EILHojtWEyxQTSw6uFS5TTCw/uFa+TDGx/PjS3z+KiS2GcRtgzIqJdboDPomteniCxMTyatXtMiExMcB22amCJ7wGMbHpBWBiYmJiYmJwAjGx/ncAn0VMrP8dwL+KieXHFyImltoF6oWZiblRTNQAAAAASUVORK5CYII

Edit : j'ai supprimé les guillemets et la fermeture> comme l'a suggéré Shaggy. Également compressé l'image sur 17 , 24 octets supplémentaires


1
Je ne pense pas qu'un fichier littéral soit considéré comme un langage de programmation valide ici sur code-golf. C'est à l'OP que cela soit valide ou non.
Camarade SparklePony

1
Vous avez peut-être raison, mais même la description de la balise kolmogorov-complexité sur codegolf.stackexchange.com/tags/kolmogorov-complexity/info mentionne une chaîne complexe, dont la représentation la plus courte pourrait être de l'imprimer littéralement. Si une chaîne littérale est considérée comme la "solution la plus défavorable" à un code-golf basé sur une chaîne, un fichier d'image littérale pourrait être considéré comme une "solution la plus défavorable" à un code-golf basé sur une image. Edit: je n'ai publié que le fichier, car j'étais surpris qu'il soit en fait plus court que les autres solutions publiées plus tôt. (après avoir supprimé le bloc tIME facultatif du fichier)
Dimanche

Si ça ne tient qu'à moi, ça me va.
Post Rock Garf Hunter

2
Avec un peu de compression, vous pourriez le réduire. Supprimez également les guillemets, les éventuels suivis =et la fermeture >. Voici une version de 366 octets sur laquelle je travaillais avant de voir votre réponse:<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLlaptj3OjrqGXAuAAAAp0lEQVRo3u3YQQqFMAxFUbeQLbiFbsH9r8k3y8CmTiKm7b2Dwv/CgUAD4jF3TYGBRdgKmRqPCQa28gaMZ20KDGz5DQhnbQoMTG2wAcPR/ScY2HeYVw4zBQYWYDUvbRLWFS/lBxhYhM3bpXzMcWBgEVa5U70cpsDAnkf1FxcwMDAwMLBczP8DAwuwmpc2HzMFBhY8qHlp8zFTYGCdyn8GKrhOYBtjv3QDvf+Zic+8bOsAAAAASUVORK5CYII
Shaggy

1
@ComradeSparklePony Nous n'avons généralement pas besoin de réponses en langage de programmation à des questions comme celle-ci: codegolf.meta.stackexchange.com/questions/3610/…
isaacg

5

Mathematica, 285 octets

e={1,1};r=RGBColor["#"<>#]&;c=Cuboid;s=c[3#-e,3#+e]&;a=Array;b=a[s[{1,-1}#]&,3,#]&;Graphics@{r@"0a8",c[-23e,23e],r@"a6b",a[s@{-#,-1}&,7],r@"f33",a[s@{#,1}&,3,5],s@{-1,0},r@"5ad",a[s@{0,#}&,4,4],r@"057",a[s[e#]&,4,0],b@4,b[-6],s@{0,-7},{-1,2}~c~{1,10},{-1,-2}~c~{1,-19},{2,-1}~c~{22,1}}

Plus facile à lire:

 1  c = Cuboid; e = {1, 1};
 2  s = c[3 # - e, 3 # + e] &;
 3  a = Array; b = a[s[{1, -1} #] &, 3, #] &;
 4  r = RGBColor["#" <> #] &; 
 5  Graphics@{
 6   r@"0a8", c[-23 e, 23 e],
 7   r@"a6b", a[s@{-#, -1} &, 7],
 8   r@"f33", a[s@{#, 1} &, 3, 5], s@{-1, 0},
 9   r@"5ad", a[s@{0, #} &, 4, 4],
10   r@"057",
11    a[s[e #] &, 4, 0], b@4, b[-6], s@{0, -7},
12    {-1, 2}~c~{1, 10}, {-1, -2}~c~{1, -19}, {2, -1}~c~{22, 1}
13  }

Les lignes 1 à 3 définissent des noms courts pour les fonctions, dont la plus importante est celle squi dessine un carré centré sur les coordonnées qu'elle reçoit (en réalité 3 fois ses coordonnées, pour une mise à l'échelle appropriée). La ligne 4 définit une fonction de couleur en utilisant le système RVB "raccourci" de Mathematica:, RGBColor["#xyz"]xyz sont les chiffres hexadécimaux, signifieRGBColor[{17x, 17y, 17z}] (de sorte que chaque coordonnée possède 16 options également espacées allant de 0 à 255). Les premières commandes des lignes 6 à 10 changent la couleur actuelle en utilisant les couleurs de raccourci les plus proches des cinq couleurs désignées (aucune valeur n'est décalée de plus de 8 lorsque nous arrondissons au multiple de 17 le plus proche).

La ligne 6 dessine le grand carré bleu canard. La ligne 7 trace la ligne des carrés magenta, la ligne 8 trace la ligne des carrés orange et le carré orange unique. La ligne 9 trace la ligne des carrés bleu clair. La ligne 11 dessine les trois lignes diagonales des carrés bleu foncé, ainsi que le seul carré bleu foncé en bas. Enfin, la ligne 12 trace les trois longs rectangles bleu foncé. La sortie est ci-dessous:

Portland

(Astuce Golf: la commande Cuboid, qui est destinée aux objets graphiques 3D, fonctionne très bien en 2D et est plus courte que Rectangle.)


2

Python, 420

from PIL import Image,ImageDraw
B=0,77,117
I=Image.new('RGB',(300,300),(0,168,142))
r=ImageDraw.Draw(I).rectangle
for x,y,c in['7172737a98cde670123456bcd70112233456666778888888bcde23232323331111300000003333'[x::26]for x in range(26)]:exec'r([W,W,14+W,14+W],[(168,108,185),(247,58,58),(90,166,216),B][%s]);'.replace('W','2+20*0x%s')%(x,y,x,y,c)
r([162,142,296,156],B)
r([142,82,156,136],B)
r([142,162,156,276],B)
I.show()

1

HTML / SVG, 550 542 521 octets

<svg><path fill=#0a8 d="M0 0h152v152H0z"/><path fill=#5ad d="M72 2h8v8h-8zm0 10h8v8h-8zm0 10h8v8h-8zm0 10h8v8h-8z"/><path fill=#057 d="M12 12h8v8h-8zm10 10h8v8h-8zm10 10h8v8h-8zm40 10h8v28h-8zm0 30h8v8h-8zm10-10h8v8h-8zm10-10h8v8h-8zm10-10h8v8h-8zM82 72h68v8H82zM72 82h8v58h-8zm0 60h8v8h-8zm40-30h8v8h-8zm10 10h8v8h-8zm10 10h8v8h-8z"/><path fill=#f33 d="M62 72h8v8h-8zm60-10h8v8h-8zm10 0h8v8h-8zm10 0h8v8h-8z"/><path fill=#a6b d="M2 82h8v8H2zm10 0h8v8h-8zm10 0h8v8h-8zm10 0h8v8h-8zm10 0h8v8h-8zm10 0h8v8h-8zm10 0h8v8h-8z"


1

HTML, 366 octets

Dimanche a obtenu une réponse Base64 alors que je travaillais encore là-dessus; s'il choisit de l'utiliser, je supprimerai cette réponse.

<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLlaptj3OjrqGXAuAAAAp0lEQVRo3u3YQQqFMAxFUbeQLbiFbsH9r8k3y8CmTiKm7b2Dwv/CgUAD4jF3TYGBRdgKmRqPCQa28gaMZ20KDGz5DQhnbQoMTG2wAcPR/ScY2HeYVw4zBQYWYDUvbRLWFS/lBxhYhM3bpXzMcWBgEVa5U70cpsDAnkf1FxcwMDAwMLBczP8DAwuwmpc2HzMFBhY8qHlp8zFTYGCdyn8GKrhOYBtjv3QDvf+Zic+8bOsAAAAASUVORK5CYII

Si la chaîne Base64 seule est une réponse valide, cela ne représente que 335 octets:

iVBORw0KGgoAAAANSUhEUgAAAJgAAACYBAMAAADq7D0SAAAAD1BMVEUAqI4ATXWobLlaptj3OjrqGXAuAAAAp0lEQVRo3u3YQQqFMAxFUbeQLbiFbsH9r8k3y8CmTiKm7b2Dwv/CgUAD4jF3TYGBRdgKmRqPCQa28gaMZ20KDGz5DQhnbQoMTG2wAcPR/ScY2HeYVw4zBQYWYDUvbRLWFS/lBxhYhM3bpXzMcWBgEVa5U70cpsDAnkf1FxcwMDAwMLBczP8DAwuwmpc2HzMFBhY8qHlp8zFTYGCdyn8GKrhOYBtjv3QDvf+Zic+8bOsAAAAASUVORK5CYII

1

HTML / SVG + JavaScript (ES6), 500 499 octets

Un supplément >est nécessaire pour que cela fonctionne comme un extrait, consultez ce violon pour le code réel.

[[t="5ad",2],[t,o=12],[t,p=22],[t,q=32],[,o,o],[,p,p],[,q,q],[,42,,28],[],[,v=62,s=82],[,52,92],[,42,102],[,,s,,68],[,s,,58],[,142],[,112,112],[,122,122],[,132,132],[t="f33",,v],[t,v,122],[t,v,132],[t,v,142],[t="a6b",s,2],[t,s,o],[t,s,p],[t,s,q],[t,s,42],[t,s,52],[t,s,v],["0a8",0,0,152,152]].map(x=>a(x[0],x[1],x[2],x[3],x[4]),a=(f="057",y=72,x=72,h=8,w=8)=>(c.after(r=c.cloneNode()),r.id++,r[s="setAttribute"]("fill","#"+f),r[s]("x",x),r[s]("y",y),r[s]("width",w),r[s]("height",h)))
<svg><rect id=c>


Explication

Un tableau de tableaux est mis en correspondance avec la fonction a, la création de clones de rectdans le code HTML, en les insérant après la première rectet la mise en leurs fill, x, y, widthet heightattributs. Chaque tableau contient des valeurs pour ces attributs, dans cet ordre, toutes les valeurs manquantes étant définies par les paramètres par défaut de a. L'apparence inutile r.id++permet l'utilisation de cloneNode()tout en s'assurant qu'il n'y a que 1 rectavec un idde c; cela évite d'avoir à utiliser le ridiculement cher document.createElementNS("http://www.w3.org/2000/svg","rect").


1

PHP + SVG, 425 octets

<svg><rect x=0 y=0 fill=#00a88e width=150 height=150 /><?foreach(["004d75"=>[[1,1],[2,2],[3,3],[7,14],[7,7],[8,6],[9,5],[10,4],[11,11],[12,12],[13,13],[7,4,0,2],[8,7,6,0],[7,8,0,5]],"5aa6d8"=>[[7,0],[7,1],[7,2],[7,3]],a86cb9=>[[0,8],[1,8],[2,8],[3,8],[4,8],[5,8],[6,8]],f73a3a=>[[6,7],[12,6],[13,6],[14,6]]]as$c=>$p)foreach($p as$v)echo"<rect x={$v[0]}1 y={$v[1]}1 width=".(8+10*$v[2])." height=".(8+10*$v[3])." fill=#$c />";

étendu

<svg><rect x=0 y=0 fill=#00a88e width=150 height=150 />
<?foreach([
"004d75"=>[[1,1],[2,2],[3,3],[7,14],[7,7],[8,6],[9,5],[10,4],[11,11],[12,12],[13,13],[7,4,0,2],[8,7,6,0],[7,8,0,5]]
,"5aa6d8"=>[[7,0],[7,1],[7,2],[7,3]]
,a86cb9=>[[0,8],[1,8],[2,8],[3,8],[4,8],[5,8],[6,8]]
,f73a3a=>[[6,7],[12,6],[13,6],[14,6]] # Array containing color and position ,width, height of each rect without the background
]as$c=>$p)
  foreach($p as$v)
    echo"<rect x={$v[0]}1 y={$v[1]}1 width=".(8+10*$v[2])." height=".(8+10*$v[3])." fill=#$c />"; # Output the rects

Le résultat du code dans un extrait HTML

<svg><rect x=0 y=0 fill=#00a88e width=150 height=150 /><rect x=11 y=11 width=8 height=8 fill=#004d75 /><rect x=21 y=21 width=8 height=8 fill=#004d75 /><rect x=31 y=31 width=8 height=8 fill=#004d75 /><rect x=71 y=141 width=8 height=8 fill=#004d75 /><rect x=71 y=71 width=8 height=8 fill=#004d75 /><rect x=81 y=61 width=8 height=8 fill=#004d75 /><rect x=91 y=51 width=8 height=8 fill=#004d75 /><rect x=101 y=41 width=8 height=8 fill=#004d75 /><rect x=111 y=111 width=8 height=8 fill=#004d75 /><rect x=121 y=121 width=8 height=8 fill=#004d75 /><rect x=131 y=131 width=8 height=8 fill=#004d75 /><rect x=71 y=41 width=8 height=28 fill=#004d75 /><rect x=81 y=71 width=68 height=8 fill=#004d75 /><rect x=71 y=81 width=8 height=58 fill=#004d75 /><rect x=71 y=01 width=8 height=8 fill=#5aa6d8 /><rect x=71 y=11 width=8 height=8 fill=#5aa6d8 /><rect x=71 y=21 width=8 height=8 fill=#5aa6d8 /><rect x=71 y=31 width=8 height=8 fill=#5aa6d8 /><rect x=01 y=81 width=8 height=8 fill=#a86cb9 /><rect x=11 y=81 width=8 height=8 fill=#a86cb9 /><rect x=21 y=81 width=8 height=8 fill=#a86cb9 /><rect x=31 y=81 width=8 height=8 fill=#a86cb9 /><rect x=41 y=81 width=8 height=8 fill=#a86cb9 /><rect x=51 y=81 width=8 height=8 fill=#a86cb9 /><rect x=61 y=81 width=8 height=8 fill=#a86cb9 /><rect x=61 y=71 width=8 height=8 fill=#f73a3a /><rect x=121 y=61 width=8 height=8 fill=#f73a3a /><rect x=131 y=61 width=8 height=8 fill=#f73a3a /><rect x=141 y=61 width=8 height=8 fill=#f73a3a />

PHP + SVG, 375 octets

Ce nombre d'octets peut être atteint en compressant le SVG

<?=bzdecompress(base64_decode("QlpoNDFBWSZTWY2177gAASSZgEgA/+c/5B3gMAE5TQVtQeig0AAACU0VNMAAAEYIlEnpMKNlGahso2plh0zoaSEpIkukINaC3RWRF74IvArdRF1FcBXrSTFWXTorp2xvpb3k7FbaV62syISgiBEweHhxtWUmgWCsqqaKSEARyAOAEZJJOwYBQqTAWotSrmEXJbBRTYNhCg4RPaKOUUbAX+Fr4VfIrzzIQQkkJCWfMEEOOISTuDkOzgQzDQDNQKu/4K7AZh8L41DddV8iv2LQOBXv+iugriHAr6sK/IrUV1FeRXMV3FdhW8V9KugrmK8CvOQin+LuSKcKEhG2vfcA"));
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.