Winter Bash 2014 est à son apogée et n'aimons-nous pas tous les chapeaux? Surtout les chapeaux secrets!
Alors, pourquoi ne pas en tirer un des chapeaux secrets?
Le défi
Votre tâche consiste à dessiner le chapeau de bienvenue chaleureux en proportion, dans la langue de votre choix et ayant la structure exacte indiquée sur cette page .
Comme toujours , vous pouvez rendre le chapeau à un fichier ou à un écran à l'aide de graphiques vectoriels ou raster. Si votre sortie est pixellisée, votre image doit avoir des dimensions de 400x400 pixels ou plus.
De plus, le contenu réel du chapeau (la zone du rectangle de délimitation des parties colorées de l'image) devrait couvrir plus de 40% de votre image de sortie.
Caractéristiques
L'image ci-dessous répertorie les différentes dimensions du chapeau. Toutes les dimensions sont dans l'unité, par exemple, les pixels. Tous les rayons dans l'image doivent être dessinés avec un rayon d' 13
unités.
Couleurs :
- Rouge dans l'étoile et l'anneau circulaire - rgb (255, 28, 34)
- Jaune dans le cercle - RGB (255, 202, 87)
- Gris le plus clair - RGB (88, 88, 92)
- Gris le plus foncé - RGB (31, 26, 26)
- Gris moyen - RGB (64, 64, 64)
Notation
C'est le code de golf, donc la réponse la plus courte (en octets) gagne.
En guise de mise en garde, l’utilisation de la compression existante (comme l’incorporation d’un fichier GIF compressé) tombe dans plusieurs failles standard .
la source
Réponses:
GolfScript (
376 373 364350 ou645 610607 octets)Suivant la spécification d' origine , qui demandait la construction exacte du SVG, un SVG au golf est généré sur 607 octets.
Le code contient beaucoup de caractères non imprimables, alors voici la sortie xxd:
C'est une variante du moteur de grammaire constructive que les adeptes de la complexité de kolmogorov connaîtront:
Il s'est avéré être un peu mieux de mettre en majuscule le SVG au golf, de le compresser, puis de le mettre en minuscule après la décompression.
Lorsqu'il est exécuté, il génère un fichier SVG de 840 octets:
J'ai ajusté la position de quelques millipixels et corrigé une petite asymétrie dans la partie grise la plus sombre.
Toutefois, les modifications apportées à la question et à la discussion sur le chat indiquent qu'il est en fait permis de créer une bonne approximation du SVG, ce qui peut être fait en 364 octets. La chaîne de décompression étant similaire, la sortie xxd du fichier GolfScript est la suivante:
et génère un fichier SVG de 547 octets:
Merci à Paul LeBeau d’ avoir signalé une sauvegarde de 7 octets dans le SVG qui se traduisait par 9 octets dans le GolfScript et pour sa réponse qui démontrait que l’étoile pouvait être dessinée avec seulement les 5 points. (En utilisant sa réponse, je pourrais descendre à 329 octets, ou 323 avec quelques ajustements à sa réponse, mais je ne suis pas à l'aise avec ça).
Exporté à 50% avec Inkscape:
Pour voir la structure, voici le SVG rendu avec
fill="none"
tout et quelques couleurs de remplissage changées en couleurs de trait:la source
SVG (
462 460 454 429 384365 octets)Je sais que ce n'est pas un langage de programmation, mais je pensais que cela serait au moins utile à quiconque générant une sortie SVG ...
Ceci est basé sur le SVG de Peter Taylor.
En utilisant les coordonnées originales et en optimisant un peu les chemins, j'ai réussi à réduire le format SVG. J'ai aussi corrigé les couleurs.
Mise à jour: correction d'une faille signalée par Peter Taylor et de la position des résultats et sauvegarde de 2 octets supplémentaires.
Mise à jour 2: incorporation d'un autre correctif et suggestions de Peter (-6 octets)
Mise à jour 3: Je viens de remarquer que les instructions spécifient maintenant que tous les rayons sont 13, aussi, profitant de cela et optimisant un peu plus les chemins, j’ai sauvé 25 octets supplémentaires. Un violon plus lisible ici.
Mise à jour 4: comme je suppose déjà que le SVG est incorporé au HTML (les SVG autonomes ont besoin de la déclaration d'espace de nom), je peux le réduire davantage. (a) Je n'ai pas besoin des attributs width et height car la taille du fichier SVG est inférieure à la taille par défaut que les navigateurs donnent aux objets dont la taille est indéteminée (300x150). (b) l'analyseur HTML pardonne les attributs N'ayant pas de guillemets, certains peuvent être supprimés (idée de Squeamish Ossifrage ). Enregistre un autre 45 octets.
Mise à jour 5: Utiliser les astuces de hsl pour annoter les couleurs et supprimer les balises de fin. Nous avons enregistré 19 autres octets. Ce dernier m'a paru un peu trompeur au début, mais comme cela fonctionne dans tous les navigateurs, j'ai changé d'avis. :) Merci, hsl!
la source
fill="none"
de régler ce problème en ajoutant des groupes ou en ajustant la courbe.<rect>
devrait avoir la hauteur74
plutôt que78
. Et je fais une économie de 5-char pour le remplacer par un<path>
à la foisfill
etstroke
,stroke-width="18"
puis déplacé à l' intérieur du<g>
et la commune eststroke-width="18"
passé de deux chemins vers la<g>
. Avoir un autre<path>
plutôt qu'un<rect>
devrait également aider la compressibilité un tout petit peu.Mathematica
787 612 600 514506 octetsQuantité surprenante de code nécessaire. Sera sûrement battu.
Forme non-golfée
Golfé
la source
HTML + ES6, 533
Extrait (modifié):
la source
serif
, ce qui n'est même pas une police spécifique ...HTML + CSS,
676 636625 octetsCela peut être joué au golf, en éliminant ceux-ciMaintenant, utilisez des transformations pour tout centrer au lieu deleft:XXXpx
et en utilisant une sorte de centrage.left:XXXpx
.Note: Cela fonctionne mieux / comme prévu dans Firefox sous Windows
Le résultat final ressemble à:
la source
ActionScript 3.0, 491 octets
Forme de golf:
Sortie: http://megaswf.com/file/2708781.swf
la source
var ww=new WarmWelcome(); stage.addChild(ww);
et dessinez-le en Flash avec liaison AS3:)
MATLAB R2013a,
551541C'est mon premier code de golf. Donc si quelque chose n'est pas conforme aux règles, s'il vous plaît enseignez / dites-moi :)
Forme de golf:
Sortie (pixellisée):
la source
LaTeX / TikZ (613 octets)
Le résultat de
pdflatex
est un fichier PDF avec le chapeau sous forme de graphiques vectoriels et un cadre de sélection étroit.Ungolfed
Les valeurs sont extraites du fichier SVG, elles étaient plus précises (mais il contient également des erreurs d’arrondi). La partie la plus délicate était les lignes inclinées sombres à l'arrière-plan. Ils sont dessinés comme une ligne très épaisse avec des lignes et des jonctions arrondies.
la source
Perl + TK: 555
Les nouvelles lignes sont uniquement destinées à la lisibilité, bien que je me suis perdu de nombreuses variables.
Voici une photo:
Je ne pense pas que ce soit presque parfait, mais c'est assez proche :)
la source