Contexte / Description
Remarque: comme le souligne @HelkaHomba, les identifiants GitHub réels ne sont pas réellement aléatoires mais basés sur le hachage d'un nom d'utilisateur
L'avatar GitHub par défaut est une image 5x5 pixels. Une couleur est choisie au hasard, puis des pixels aléatoires sont remplis d'un côté (droite ou gauche, taille 2x5) en utilisant cette couleur. Ensuite, ce côté est copié et retourné de l'autre côté, à travers l'axe des y. Les pixels restants qui ne sont pas remplis sont # F0F0F0, ou rgb (240,240,240).
Les pixels de la colonne centrale (taille 1x5) sont ensuite remplis au hasard, en utilisant la même couleur que précédemment.
Sortie
Remarque: pour ce défi, nous ignorerons l'espace qui entoure les avatars GitHub
Le programme devrait sortir un fichier image 5x5 pixels. Voir http://meta.codegolf.stackexchange.com/a/9095/42499 pour les détails
Exemples
Remarque: ceux-ci ont été évidemment augmentés de 5x5 pour que vous puissiez les voir
Bonne chance!
la source
Réponses:
Pyth - 27 octets
Évidemment, cela ne fonctionne pas en ligne, mais vous pouvez le faire imprimer des codes de couleur ici .
la source
Perl 5 , 77 octets
Ce n'est pas concurrent car il n'a qu'une palette de 256 couleurs, ne fonctionne que sur les terminaux qui prennent en charge les codes d'échappement ANSI et ne produit pas réellement une image carrée de 5 pixels, mais j'ai pensé que je le publierais quand même car c'était amusant de jouer au golf vers le bas.
Note: l'
\e
est en fait char ASCII\x1B
.Usage
Explication
Rien de particulièrement intelligent sauf peut-être:
$-
pour arrondir automatiquement le numéro de couleur à utiliser dans la séquence d'échappement, utilisé à la place de$n=0|rand 254
.Exemple de sortie
la source
MATL ,
3629 octetsCela enregistre le résultat dans un fichier
a.png
.Le remplacement
'a'
par2
dans le code affiche l'image (agrandie) au lieu d'enregistrer un fichier:Voici un exemple de sortie:
Explication
la source
En fait, 53 octets
Essayez-le en ligne!
Est en fait mauvais pour le traitement des chaînes. Je pense que je l'ai déjà mentionné. Ce programme génère une image netpbm P6 en utilisant CP437, comme suit:
Cela peut être converti en PNG à l'aide d'ImageMagick:
Version PNG agrandie:
Explication:
la source
ppm
image.Python,
167164155148 octetsSortie en ppm
range(5)
à" "*5
print
map
puisque seul astr(p)
été utiliséexec""*5
placefor _ in " "*5:
Quelques améliorations par rapport à l'ancien code basé sur des chaînes:
la source
Swift 2.3,
593585 octetsMise à jour
Swift 3, 551 octets
Je suis à la WWDC et je viens de recevoir la version bêta de Xcode 8 avec Swift 3. Apple a fait certains des appels CoreGraphics plus "Swifty", et je suis en mesure de réduire le bytecount.
Code Swift 2 non golfé:
Cette réponse suppose qu'UIKit est disponible et utilise le framework Cocoa Touch.
Quelques exemples d'images de sortie:
Je sais que je ne peux pas rivaliser avec la plupart des autres réponses, mais je voulais donner un coup de pouce à ce défi personnel. Il y a certainement matière à amélioration avec cette réponse, mais je pense qu'il sera difficile de descendre en dessous de quelques centaines d'octets en raison de la longueur des noms de méthode d'écriture d'image UIKit et CoreGraphics. J'ai choisi d'écrire un fichier PNG réel plutôt que des valeurs PPM comme exercice pour moi-même, mais des réponses plus courtes seraient certainement possibles si j'utilisais le format PPM.
Je commence déjà comme une perte en ayant à déclarer une variable à amorcer
srand48
avectime
. J'ai choisi çaarc4random()
ouarc4random_uniform()
parce que finalement je perdrais plus d' octets avec ceux -ci . J'amorce le rng à utiliserdrand48
pour générer une couleur aléatoire et choisir quand écrire une couleur sur un pixel.CGSize
vsCGSizeMake
etCGRect
vsCGRectMake
:Je bascule entre les fonctions API C en ligne et leurs extensions Swift pour trouver le constructeur le plus court pour chacune.
CGSizeMake
finit par être plus court queCGSize()
, etCGRect
finit par être plus court queCGRectMake()
:Il faudrait que je crée
CGFloat
sx
ety
raison de la nature de la boucle for. Je ne suis vraiment pas ravi de la boucle 2D et si l'égalité vérifie, mais j'avais vraiment du mal à trouver un moyen plus court. Il y a certainement de la place pour raser quelques octets ici.Appeler
CGContextFillRects
avec un tableau deCGRect
structures est moins cher que d'appelerCGContextFillRect
deux fois avec deux valeurs différentes, donc j'économise quelques octets avec le tableau et le pointeur.J'économise également 27 octets en n'appelant pas
UIGraphicsEndImageContext()
. Bien que ce soit normalement un "bug" dans le code de production, il n'est pas nécessaire pour ce programme de jouets.Couleurs:
Les couleurs sont également difficiles à gérer, car je crée des
UIColor
objets mais je dois écrire unCGColor
type opaque sur chaque pixel. Le code le plus court , j'ai trouvé pour créer une couleur au hasard était d'utiliser leUIColor
constructeur et obtenir le àCGColor
partir de ceUIColor
. Idem avec le blanc. Si j'utilisais le framework Cocoa au lieu de Cocoa Touch, je pourrais peut-être enregistrer quelques octets en utilisantCGColorGetConstantColor()
, mais malheureusement cette méthode n'est pas disponible dans le SDK Cocoa Touch.Écrire dans un fichier:
L'écriture dans un fichier prend près de 100 octets. Je ne sais même pas comment procéder pour l'optimiser. Sur certains systèmes, selon vos autorisations, vous devrez peut-être utiliser le répertoire Documents qui serait encore plus long:
Certainement ouvert à d'autres optimisations.
Édition 1: enregistré quelques octets en réorganisant certaines déclarations de variables.
la source
Mathematica,
1051029894 octets
est l' opérateur Transpose .Édition 1: enregistré 3 octets en remplaçant
Round
+RandomReal
parRandomInteger
Edit 2: 4 octets enregistrés en remplaçant
RandomInteger
parRandomChoice
Edit 3: 4 octets enregistrés en remplaçant
RandomColor
etGrayLevel
parRandomReal
la source
MATLAB, 102 octets
Salut, voici ma solution matlab:
L'entrée
x
de la fonction est le nom du fichier de sortie. Par exemple:produit une image png appelée 'output.png'.
Voici les résultats de quelques exécutions de ce code.
la source
Dyalog APL,
4342 octets'P3',5 5 256,∊(3⍴240)(?3⍴256)[⌈(⊢+⌽)?5 5⍴0]
'P3',5 5a,∊(3⍴240)(?3⍴a←256)[⌈(⊢+⌽)?5 5⍴0]
De droite à gauche:
?5 5⍴0
génère une matrice 5 × 5 de nombres aléatoires entre 0 et 1 ( mais jamais 0 ou 1 )(⊢+⌽)
est un train qui ajoute la matrice avec sa réflexion⌈
plafond, renvoie 1 ou 2 pour chaque élément(3⍴240)(?3⍴256)
couleurs - blanc-ish et aléatoire[ ]
utiliser chaque élément de la matrice comme index en couleurs'P3',5 5 256,∊
aplatir et ajouter un en-têtela source
PHP, 236 octets
Je sais que c'est un vieux défi mais j'aime juste me mettre au défi.
Ungolfed:
Exemple de sortie:
la source
Javascript ES6, 296 octets
Remarque: ne produit pas de fichier, dessine sur un canevas.
Voyez-le en action dans ce JS Fiddle .
la source