Lorsque je suis tombé par hasard sur cette question, je me suis rappelé que j'avais déjà vu des règles précises pour la construction du drapeau sud-coréen. Et c'est une construction assez différente.
Donc, vous devez dessiner une construction exacte de celui-ci maintenant!
spécification
Vous pouvez rendre l'indicateur au fichier ou à l'écran à l'aide de graphiques vectoriels ou raster. Si votre sortie est pixellisée, votre image doit avoir des dimensions de 450 x 300 pixels ou plus.
Tous les rapports de longueur et les positions doivent être exactement comme indiqué dans le diagramme suivant:
Notez que les centres des deux petits cercles s'alignent sur la diagonale.
Pour les couleurs, vous devez utiliser la palette suivante:
- Blanc: #FFFFFF
- Noir: # 000000
- Rouge: # C60C30
- Bleu: # 003478
La limite noire ne doit pas être tracée sauf si votre système de dessin ne vous permet pas de spécifier une toile 3: 2 pour des raisons techniques (sinon, vous devez utiliser une toile 3: 2 et le drapeau doit la remplir en totalité). Si vous devez ajouter la limite, elle peut être arbitrairement épaisse - le drapeau doit être considéré strictement à l' intérieur de la limite noire. Aucune autre ligne d'aide ou indicateur de longueur ne doit être tracé. C'est-à-dire que le drapeau devrait apparaître exactement comme dans la première image.
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
CountryData["ROK","Flag"]
ça ne compte pas?Réponses:
PHP / HTML / SVG, 324
(sauts de ligne ajoutés pour plus de lisibilité)
Les données compressées sont étendues aux mêmes données SVG que ma réponse précédente, mais avec deux modifications pour faciliter la compression:
Les deux
<use>
sections sont étendues au contenu d'origine de la<defs>
section. Cela allonge le texte source, mais réduit l'entropie et compresse mieux.Dans le premier
<g>
élément, j'ai changétransform=translate(36,24)rotate(33.69)
pourtransform=rotate(33.69)translate(43.27)
. Cela a le même effet géométrique, mais compresse mieux car la séquence><g transform=rotate(
apparaît maintenant deux fois.Par défaut, PHP utilisera ceci comme
Content-Type: text/html
, donc la syntaxe XML invalide ne devrait pas être un problème.SVG / HTML, 463
L'analyseur HTML ne s'inquiète pas trop de la syntaxe correcte. Nous pouvons donc supprimer les guillemets dans les paramètres tant qu'ils ne contiennent pas d'espaces. Il devrait être possible de réduire cela avec un peu de Javascript.
la source
Python + Pycairo,
371 370366 octetsSort un fichier SVG nommé
F
.la source
C(*[.77,0,.05,.2,.19,.47][i::2])
est plus court queC(*[(.77,.05,.19),(0,.2,.47)][i%2])
s=SVGSurface("F",12,8);c=Context(s)
au lieu de justec=Context(SVGSurface("F",12,8))
?HTML + CSS,
966 906 843 792762 octetsPas un gagnant à tout moment, mais beaucoup de plaisir à dessiner en CSS. Cela peut être beaucoup joué au golf cependant.
CSS, HTML :
;border:1px solid
est juste pour montrer car l'<body>
étiquette a des limites claires qui peuvent être observées par Inspector ou des outils similaires, comme indiqué par le POREMARQUE Fonctionne uniquement dans Firefox (ou Chrome canary / dev) en raison de l'utilisation de transformations et de dégradés non spécifiques au fournisseur.
Le voir en action
la source
0deg
->0
(deux fois) et supprimerleft:0
dea:before
. En HTML, vous pouvez utiliser<p><ul></ul>
. (<p>
sera implicitement fermé avant<ul>
):before{content:''}
et:after{content:''}
sont plus longs que le simple ajout d' un autre élément ( en dépit de cette recherche bien mieux).-webkit-
avant tout letransform:
s, mais inutile de dire que cela le rendrait un peu plus long!BBC Basic,
349343 caractères ASCII, taille de fichier avec jeton 330Téléchargez l'émulateur à l' adresse http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
L’utilisation des couleurs correctes a ajouté beaucoup, mais la mise en jeu de toutes les commandes graphiques jusqu’à des codes vDU bruts permet d’économiser 6 caractères au total par rapport à mon message original. Tous les graphiques sur le micro BBC sont créés via des codes de contrôle ASCII spécifiques à la machine. Ainsi, au lieu d’utiliser des commandes graphiques de haut niveau, vous pouvez envoyer des octets directement au contrôleur VDU (généralement plus court, mais la lisibilité est très coûteuse). Une valeur se terminant par un point-virgule au lieu d'une virgule est une représentation little-endian de 16 bits de 2 octets.
Version non-golfée
Au début du programme, je déplace l'origine au centre de l'écran.
Je ne trace pas de grands demi-cercles colorés. Au lieu de cela, je lance une boucle qui dessine de petits cercles rouges et bleus, tournant dans le sens contraire des aiguilles d'une montre. Je fais presque 3 tours complets (en commençant par le bleu à droite), ce qui est évidemment plus que suffisant pour remplir le disque. Je m'arrête au 3ème tour, juste quand le bleu en bas à droite est dans la bonne position pour s'aligner avec les barres (qui doivent être tracées.)
Lorsque l'angle est correct, je dessine une des barres. le vecteur x, y servant à dessiner le petit cercle bleu actuel sert à indiquer la direction dans laquelle la barre doit être. Pour chacune des 3 révolutions, une valeur différente de l’entier
a*7DIV44
est calculée. Elle indique si la première, la deuxième ou la troisième barre doit être dessinée, avec son bord intérieur à 6 / 8,7 / 8 ou 8/8 unités du centre ( en fonction des unités utilisées dans la spécification de la question.) Étant donné que les unités du programme correspondent à 1/4 de celles spécifiées, il s'agit toujours d'une demi-unité; nous divisons donc à nouveau par 2 avant d'enregistrer dans la variable ´b´ afin d'éviter une répétition de la moitié plus tard.Les barres sont dessinées pleines, puis le milieu est supprimé si nécessaire. Cela évite que des nœuds ne rejoignent les demi-barres. La variable z indique si une barre doit être coupée. C'est-à-dire que lorsque y est négatif pour les barres du milieu et lorsque x est positif pour les autres barres.
MOVE
est un coup absolu.MOVEBY
est un mouvement relatif.PLOT133
considère les deux dernières positions du curseur graphique, plus la nouvelle spécifiée (en coordonnées relatives) comme les trois coins d'un parallélogramme, et trace le tracé de ce parallélogramme.Résultat (et discussion sur les limitations linguistiques)
J'ai sélectionné un mode d'écran de 1280x800 pixels logiques = 640x400 pixels physiques, qui ont par défaut un fond noir. Sur cela, je dessine un rectangle blanc de -600, -400 à 600.400 qui agira comme ma "toile".
BBC Basic peut gérer 16 couleurs à la fois, à partir d’une palette reprogrammable. Mais il ne prend en charge que les couleurs 18 bits, alors que la question précise que les couleurs sont au format 24 bits. Les couleurs aussi proches que possible.
la source
Tortue Python 3 (
552549 octets)( Image en taille réelle )
Edit: Maintenant que nous avons Stack Snippets, voici un test Stack Snippet utilisant Skulpt , avec l’aide de la réponse d’ArtOfCode ici . Malheureusement, Skulpt n’ayant pas encore complètement implémenté Python, j’ai dû mutiler la moitié de mon code pour que cela fonctionne. En d'autres termes, cet extrait de code n'a pour but que d'indiquer le fonctionnement de mon programme (sans avoir à extraire Python).
(En outre, je constate que cela pourrait ne pas fonctionner avec certains navigateurs ...)
Code actuel:
Comme la tortue est si lente, si vous voulez des résultats instantanés, vous pouvez les ajouter
t.tracer(0)
après la première ligne avant d'exécuter le script.Remarque: pour une raison quelconque, tortue continue à dessiner ce qui ressemble à des pixels noirs supplémentaires même si je l’ai déjà appelé
up()
, et je ne sais pas pourquoi ...la source
HTML + ES6, 388
Si votre navigateur prend en charge ES6, vous pouvez le visualiser sur JSFiddle ou exécuter l'extrait de code .
Il construit le drapeau à partir de certaines formes de base, en faisant d'abord pivoter la toile pour tenir compte des angles.
la source
<canvas width=576 height=384 id=D><script>c=D.getContext('2d')
est de 9 octets de moins. De plus, comme toute la page est blanche, je pense que vous devez dessiner la bordure.Mathematica
404450la source
C ++ TROP GRAND
A tenté cela en utilisant ma bibliothèque de dessins PPM faite à la maison . Il est techniquement évolutif, mais je suis limité par ma fonction de remplissage récursif, car elle est peu fiable et aime les erreurs de segmentation. Je pense qu’elle utilise trop de mémoire, je ne laisse donc pas l’utilisateur régler l’échelle. L'image est irrégulière car les coordonnées que j'ai entrées pour chaque coin des barres sont légèrement décalées.
Je l'ai configuré pour commencer avec un fond noir, puis j'ai placé un cercle blanc au centre, puis des cercles rouges et bleus. Utilisé des remplissages récursifs pour ajouter le reste de rouge et de bleu. Ensuite, a dessiné des rectangles avec des lignes blanches pour marquer les barres noires. Divisez le fond noir en 4 sections avec des lignes blanches et utilisez 4 remplissages récursifs pour rendre chaque section blanche. Le faire en un seul passage aurait causé une erreur de segmentation. C'est toujours très lent à rendre.
Code principal non-golé (le reste de la bibliothèque est trop volumineux, jouer au golf importe peu)
la source
PostScript ,
572477 octetsCode de golf:
Code non golfé:
Résultat:
la source
Python 2, 483 octets
Améliorations possibles:
Sortie sous forme de texte PPM, utilisation:
version bêta non golfée
la source