Le 1er novembre, la programmation de Puzzles et de Code Golf sera diplômée, donc au cours des 11 prochains mois, nous voudrons garder quelques souvenirs de notre premier cycle.
Écrivez un programme qui produit le favicon PPCG, vu ci-dessous.
- L'image doit mesurer au moins 64x64 pixels.
- Le bleu doit être de la couleur # 62B0DF. Le fond peut être blanc ou gris clair.
- L'image n'a pas besoin d'être pixellisée comme elle l'est ici.
- Vous pouvez également créer du texte (avec des dimensions d'au moins 64 x 64 caractères non blancs) à l'aide des codes de couleur ANSI lumineux standard de cyan et blanc.
- Les images intégrées et l'importation du logo PPCG ne sont pas autorisées.
C'est du golf de code, donc les règles standard s'appliquent. Le code le plus court en octets gagne.
Réponses:
Bash (OSX),
33272318 octetsVous avez entendu l'homme, comme bon nous semble.
Je suis conscient qu'il s'agit d'un concours de popularité. Mais bon, quand vous pouvez coder le golf, pourquoi pas?C'est maintenant un golf de code. \ o / Cela était valable au moment de la publication.
Il y a même eu une exception pour moi à un moment donné! Mais, comme @AlexA. souligné...
Je suis d'accord avec cela et, à ce titre, je ne souhaite pas que cela soit choisi comme réponse. Cela ne veut pas dire que je n'essaierai pas encore de jouer au golf. ;)
Merci à @ ΚριτικσιΛίθος d'avoir rasé 6 octets avec une URL courte de fantaisie!
Merci à @ ev3commander d'avoir rasé encore 5 octets avec une URL encore plus élégante et plus courte!
Merci à @kennytm d'avoir souligné que je peux réduire la taille du protocole et supprimer les guillemets, ce qui me fait économiser encore 4 octets!
la source
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 octets
Cette sorties
C'est probablement le code le plus court avec lequel vous pouvez réellement reconnaître le logo ... J'ai créé un langage terrible :(
Essayez-le ici
Remarque
Ceci a été soumis avant la modification des règles, selon les règles actuelles, cette réponse n'est pas valide. Je vais le laisser ici pour peut-être inspirer les gens
la source
Javascript
Remarque: Cette réponse a été faite avant que les règles aient été considérablement modifiées, de sorte que cette réponse n'est pas en concurrence.
Cela s'imprime dans la console de votre navigateur, grâce à un traitement de chaîne fou et génial.
J'en ai fait une version plus courte mais je n'arrive pas à la trouver nulle part.
Chrome / Firefox
Cette version double simplement sur chaque pixel pour un aspect plus proportionnel
Safari
C'est
long_string_here
un ppm , j'ai écrit ce script il y a quelque temps pour imprimer une image arbitraire sur la console .Comment cela marche-t-il? Eh bien, JavaScript a une fonctionnalité dans
console.log
laquelle vous pouvez fournir des CSS pour styliser le message.Je le caractère unicode
█
et la couleur que la couleur correcte, qui est récupérée à partir du ppm.Pour afficher toute autre exécution d'image:
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
:, puis copiez la sortie dans<long_string_here>
Code complet
Parce que c'est assez massif, j'ai mis le code complet dans des bacs à pâte pour que vous puissiez les exécuter
Chrome / Firefox: pastebin
Safari: pastebin
Résultat
Résultat Firefox
Résultat Safari
la source
Rubis avec des chaussures
Exemple de sortie:
la source
Javascript (ES2015), 199 octets
(+72 octets de CSS)
Mon code imprime le logo dans l'
<body>
élément d'une page via des séquences unicode. Les suggestions d'amélioration du code sont les bienvenues (en particulier pour la0
tâche -pads)Javascript (nouvelles lignes insérées pour plus de lisibilité)
CSS
Résultat
Non golfé et expliqué
Si nous considérons l'icône PCG 16x16 originale publiée à l'origine, nous pourrions encoder les informations dans un format binaire.
Par exemple, la première ligne serait codée comme l'
1100 0000 0000 0011
endroit où les[0, 1]
mappes[blue, white]
. Chaque nombre binaire peut être facilement stocké en format décimal donc1100 0000 0000 0011
est49155
. Le tableaucontient toutes les informations (au format décimal) sur chaque couleur de pixel. Chaque élément du tableau représente une ligne à tracer. Notez que certaines lignes sont
0
( lignes pleines bleues) ou que leur longueur est inférieure à des16
chiffres (une ligne commençant par un pixel bleu): alors nous devons compléter à droite ces nombres binairesLa
map
fonction ajoute 15 zéros à gauche plus le nombre binaire concaténé. Ainsi, le résultat est découpé en16
pixels vers la gauche. Maintenant, le tableau est en faitRegardez de plus près les chiffres ci-dessus: nous pouvons presque voir le logo PCG. :)
Notez que si nous stockons ces informations dans le tableau, nous devons utiliser 16 x 18 octets (288 octets). Cette approche nécessite plutôt 135 octets
L'étape suivante consiste à tracer chaque ligne. La construction
boucle sur le tableau
values
(fonctionnalité ES6) et nous ajoutons au corpsoù
[...l
] représente la chaîne binaire sous forme de tableau. Par exemple, la première ligne se lirait commepuis à nouveau, nous utilisons
map()
pour transformer chaque valeur:si la valeur est
0
alors elle devient unLEFT SEVEN EIGHTHS BLOCK (U+2589)
sinon c'est un espaceEM SPACE (U+2003)
. Bref cette missionconvertit chaque
0
ou1
en bloc carré ou en espace: le tableau est ensuite joint et, avec une séquence de nouvelle ligne de fin, est ajouté au corps.Le CSS que j'ai utilisé corrige le
line-height
et leletter-spacing
(j'ai testé sur Chrome, donc le résultat peut légèrement varier dans d'autres navigateurs)la source
Brainfuck, 120148 octets
Cette réponse est désormais non compétitive. C'était avant que les règles ne soient changées, et cela n'a absolument aucun espoir de gagner comme code-golf.
Brainfuck code pour afficher la valeur hexadécimale de l'image. Très, très, longtemps.
Voici un lien pastebin et les deux premières lignes. https://paste.ee/p/LtcCy
la source
Snap , 16 blocs
Dites-moi si cela n'est pas valide.
la source
Javascript ES6, 461 octets
J'ai besoin de travailler davantage sur la compression.
la source
Bubblegum , 175 octets
L'une des rares fois où Bubblegum est utile pour la sortie graphique !
Exécutez dans un terminal qui prend en charge les codes d'échappement ANSI.
Inversez le vidage hexadécimal avec
xxd -r
Voici une capture d'écran de la sortie:
Remarque: Sur ma machine Windows avec le terminal MinGW, le binaire Windows Python ne génère pas correctement les codes ANSI, ce qui était le cas ci-dessus,
python <esolangs reference implementation>.py <infile> | cat
mais il devrait fonctionner correctement sur les machines Linux.la source
Javascript (ES6), 192 octets
Cela prend une version compressée d'un chemin SVG D. Les espaces sont supprimés, donc tous les arguments doivent être une seule décimale, donc tout nombre est multiplié par 20 avant d'être écrit dans le svg réel.
Sortie: démo: https://jsfiddle.net/Luy6qj80/
la source
LibreLogo ,
122116115 octetsCode:
Résultat:
Explication:
Tentatives précédentes:
116 octets:
122 octets:
la source
JavaScript, 680 octets
Eh bien, je l'avais déjà terminé pour le concours d'origine, dont les règles ont été radicalement modifiées. Ce n'est certainement pas le code le plus court que vous puissiez trouver. Il a été conçu pour le concours de popularité et crée le favicon original pixel par pixel. Il a également d'autres fonctionnalités. :)
Vous pouvez appeler la fonction avec jusqu'à trois paramètres:
m
devient méta et change la couleur en conséquence. Et si vous le trouvezb
trop petit, utilisez-le pour le surdimensionner de 16x16px à 64x64px . Enfina
anime le logo, comme s'il était gravé sur un tableau bleu. La valeur est la vitesse de chaque étape d'animation.Non golfé
Production
Défaut
Animé
la source
Python 3, 10 069 octets
Écrit l'hex du logo d'origine dans un nouveau fichier.
la source
R, 189 octets
Avec des retraits pour plus de clarté:
Je vole sans vergogne la méthode d'une ancienne réponse : je prends la représentation base-2 de 16 nombres, je la transforme en une matrice 16x16 de 1 et de 0 et je la trace telle quelle.
la source
Google Blockly , 140 blocs
Produit
Ajoutera une explication si demandé. Essayez-le ici
Les suggestions pour réduire la fonction massive à gauche sont les bienvenues!
la source
Python 2, 211 octets
la source
05AB1E , 49 octets
Essayez-le en ligne!
la source
Excel VBA,
252246245237 octets6 octets enregistrés grâce à Taylor Scott.
Sauvegardé encore 8 octets grâce à l'inspiration de Taylor Scott
Le code doit être exécuté à partir de la page de codes d'une feuille de calcul et ajoutera la forme à cette feuille de calcul. Cela n'a rien d'extraordinaire, mais il utilise directement la légende rectangulaire arrondie sur laquelle l'icône est basée. (Pour
AddShape
,106
correspond àmsoShapeRoundedRectangularCallout
.)Le formatage n'ajoute pas grand-chose mais il le rend plus facile à lire:
Il existe également une solution à une ligne destinée à être exécutée dans la fenêtre immédiate qui est d'un octet de plus:
la source
()
dansp()
et la conversionWith ActiveSheet. ...
àWith[Sheet1]. ...
Sheet1
, cependant. Je suppose que nous pouvons supposer que l'utilisateur exécute le code dans un nouveau fichier.Sheet1
objet par défaut devrait probablement être une norme acceptée tant que vous mentionnez que cela fait partie de la condition d'entrée / sortie dans le cadre de votre solutionSheet1
objet - vous pouvez donc laisser tomber un octet en le remplaçantWith[Sheet1].
parWith Sheet1.
Sheet1
s'agit que du nom de code par défaut de la première feuille. C'est une belle réduction de 0,4% d'octets.MATLAB,
153 150140 octetsLe code prend un tableau de nombres 16 bits (malheureusement, il n'y a aucun moyen de les coder qui réduit le nombre d'octets à part la lecture d'un fichier binaire préenregistré). EDIT: Avec un peu de créativité dans la façon dont le tableau est créé, j'ai économisé 3 octets, et avec un peu plus et une variable supplémentaire, je peux enregistrer 10 autres en plus.
Avec ce tableau, il est converti en une chaîne binaire où un ascii '1' représente le bleu et un ascii '0' est blanc. Le tableau est 2D à ce stade car chacun des 16 nombres devient une chaîne de 16 caractères.
Je soustrais 47 pour convertir cela en un tableau de 1 et de 2 (nécessaire pour le bit suivant), où chaque élément représente un pixel. Encore une fois, cela reste en 2D et est nos données d'image.
L'image est ensuite agrandie par un facteur de 8 en utilisant le plus proche voisin pour produire une image qui est au moins la taille minimale requise de 64x64px - en fait, c'est 128x128 parce qu'en quelque sorte j'ai divisé 64 par 16 pour obtenir 8> _ <(ne pas demander!).
Enfin, cela est affiché à l'aide d'une carte de couleurs où tout 1 devient blanc et tout 2 devient la nuance de bleu # 62B0DF requise.
Voici la sortie:
la source
Traitement, 211 octets
Stocker les pixels dans des entiers signés (semble être le moyen le plus efficace, je vais peut-être essayer 2 ^ 64 entiers), puis les imprimer dans un cadre.
la source
Swift (aire de jeux), 599 octets
J'ai décidé de l'essayer, car dessiner dans Swift est assez simple, et ce n'est généralement pas le golf comme ça. J'ai fini par perdre de précieux octets avec le texte ... Merde
NSDescriptiveVariableNames
!Voici à quoi cela ressemble dans la cour de récréation:
Je pense que je pourrais plus jouer au golf en aliasant des choses comme
CGRectMake
, en regroupant des objets dans une fonction, etc.la source
PHP, 145 octets, pas en concurrence
Je devrais utiliser des couleurs non vierges et des couleurs à la place, mais je suis trop fatigué.
Je suppose que cela ajoutera environ 10 octets au décompte, peut-être plus.
la source
Excel VBA, 178 octets
Fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et génère le Favicon PCG (exactement comme dans l'invite ci-dessus) dans la plage
la source
C (gcc) , 188 octets
Essayez-le en ligne!
Utilise les codes d'échappement ANSI pour imprimer 128 espaces colorés horizontaux et 64 verticaux.
(Image redimensionnée.)
la source
C ++ avec SFML , 607 octets
Code qui appelle la fonction:
Exigences :
Vous devez avoir un fichier ttf valide appelé
a.ttf
dans le répertoire courant où l'exécutable s'exécute, afin qu'il puisse charger les polices pour afficher le texteVous devez avoir les DLL SFML correspondantes dans le répertoire courant où l'exécutable s'exécute
Résultat :
Explications:
la source
tcl / tk, 113
Tcl / tk, 144
la source