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:
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 code-golf , vous devez donc viser à réduire le nombre d'octets dans votre code.
la source
Réponses:
HTML pur, 873 octets
HTML + CSS, 625 octets
la source
Tikz,
725693681671 octetsEssayez-le en ligne!
Explication
Une bonne partie du code est un wrapper:
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:
Maintenant que tout est en place, nous peignons l'arrière-plan de notre toile turquoise:
(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.
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.
Maintenant, nous allons dessiner tous les groupes de 3 points en utilisant une seule
\foreach
boucleMaintenant, nous dessinons la bonne ligne. Cette ligne sera une simple ligne avec des décalages de
.35
dans chaque direction pour correspondre à la taille d'un nœud.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.Et maintenant, nous avons terminé.
la source
\definecolor
avec laHTML
spécification (plutôt queRGB
) vous permet de spécifier des couleurs en utilisant hex.fichier PNG littéral,
283,234227 octetsÉDITER : Utilisation du service de compression d'images en ligne https://compress-or-die.com/ , cela a diminué de 7 octets.
albn @ alexhi
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 octetsEdit : j'ai supprimé les guillemets et la fermeture> comme l'a suggéré Shaggy. Également compressé l'image sur
17, 24 octets supplémentairesla source
=
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
Mathematica, 285 octets
Plus facile à lire:
Les lignes 1 à 3 définissent des noms courts pour les fonctions, dont la plus importante est celle
s
qui 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"]
où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:
(Astuce Golf: la commande
Cuboid
, qui est destinée aux objets graphiques 3D, fonctionne très bien en 2D et est plus courte queRectangle
.)la source
Python, 420
la source
HTML / SVG,
550542521 octetsla source
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.
Si la chaîne Base64 seule est une réponse valide, cela ne représente que 335 octets:
la source
HTML / SVG + JavaScript (ES6),
500499 octetsUn supplément
>
est nécessaire pour que cela fonctionne comme un extrait, consultez ce violon pour le code réel.Explication
Un tableau de tableaux est mis en correspondance avec la fonction
a
, la création de clones derect
dans le code HTML, en les insérant après la premièrerect
et la mise en leursfill
,x
,y
,width
etheight
attributs. 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 dea
. L'apparence inutiler.id++
permet l'utilisation decloneNode()
tout en s'assurant qu'il n'y a que 1rect
avec unid
de c; cela évite d'avoir à utiliser le ridiculement cherdocument.createElementNS("http://www.w3.org/2000/svg","rect")
.la source
PHP + SVG, 425 octets
étendu
Le résultat du code dans un extrait HTML
PHP + SVG, 375 octets
Ce nombre d'octets peut être atteint en compressant le SVG
la source