Generate a "GitHub" Avatar
Pyth - 27 bytes
.wC+Kc3O^Cm,240O256 3 15_PK
Obviously doesn't work online, but you can have it print color codes here.
Perl 5, 77 bytes
This is non-competing as it only has a 256 colour palette, only works on terminals that support ANSI escape codes and doesn't actually output a 5 pixel square image, but I thought I'd post it anyway as it was fun golfing this down.
sub x{"\e[48;5;@{[rand>.5?$-||=rand 254:254]}m "}say$}=x,$b=x,x,$b,$}for 0..4
Note: the \e
is actually ASCII char \x1B
.
Usage
perl -E 'sub x{"\e[48;5;@{[rand>.5?$-||=rand 254:254]}m "}say$}=x,$b=x,x,$b,$}for 0..4'
Explanation
Nothing particularly clever except perhaps:
- Use
$-
to automatically round the colour number for use in the escape sequence, used instead of$n=0|rand 254
.
Example output
MATL, 36 29 bytes
5l$rtP+!kllII$r*O16tQ/XE'a'YG
This saves the result in file a.png
.
Replacing 'a'
by 2
in the code displays the image (scaled up) instead of saving a file:
5l$rtP+!kllII$r*O16tQ/XE2YG
Here's an example output:
Explanation
5l$r % 5×5 matrix of independent random values with uniform distribution
% on the interval (0,1)
tP+! % Duplicate, flip vertically, add, transpose. This gives a horizontally
% symetric matrix. Center column pixels are uniformly distributed on the
% interval (0,2). Rest have a triangular distribution on (0,2)
k % Round down. In either of the above cases, this gives 0 and 1
% with the same probability
llII$r % 1×1×3 array of independent random numbers with uniform distribution
% on (0,1). This is the foreground color.
* % Multiply the two arrays with broadcast. Gives a 5×5×3 array. Ones in the
% 5×5 array become the random foreground color. Zeros remain as zeros.
O % Push 0
16tQ/ % 16, duplicate, add 1, divide: gives 16/17, or 240/255
XE % Replace 0 by 16/17: background color
'a' % Push file name
YG % Write image to that file