Perl 5, 486 477 476 450 (+7 для -MImager
прапора) = 457 байт
Я врятував кілька байт завдяки Dada, використовуючи функціональні new
дзвінки та позбувшись паронів, а також pop
замість $ARGV[0]
остаточної крапки з комою. Я врятував ще кілька, поставивши це $n=pop
там , де він вперше використовується, і використовуючи позначення простору Perl 4 '
замість, а не ::
.
$i=new Imager xsize=>$n=pop,ysize=>$n;$h=$n/2;$s=$n*.6;$f=$n*.4;$c='color';($b,$r,$y,$g,$w)=map{new Imager'Color"#$_"}qw(4285f4 ea4335 fbbc05 34a853 fff);$i->box(filled=>1,$c,$w);$i->arc($c,$$_[0],r=>$h,d1=>$$_[1],d2=>$$_[2])for[$b,315,45],[$r,225,315],[$y,135,225],[$g,45,135];$i->circle($c,$w,r=>$n*.3,filled=>1);$i->box($c,$b,ymin=>$f,ymax=>$s,xmin=>$h,xmax=>$n*.9,filled=>1);$i->polygon($c,$w,x=>[$n,$n,$s],y=>[0,$f,$f]);$i->write(file=>'g.png')
Для цього потрібен модуль Imager , який потрібно встановити з CPAN. Приймає одне ціле число як аргумент командного рядка. Зображення не є антисексуальним, тому трохи потворне.
Скопіюйте наведений нижче код у файл g.pl. Нам потрібні додаткові +7 байт для -MImager
прапора, але він економить кілька байт, тому що нам цього не потрібно use Imager;
.
$ perl -MImager g.pl 200
Ось різні розміри:
N = 10
N = 100
N = 200
Код, який повністю не використовується, є прямолінійним.
use Imager;
my $n = $ARGV[0];
my $i = Imager->new( xsize => $n, ysize => $n );
my $blue = Imager::Color->new('#4285f4');
my $red = Imager::Color->new('#ea4335');
my $yellow = Imager::Color->new('#fbbc05');
my $green = Imager::Color->new('#34a853');
my $white = Imager::Color->new('white');
$i->box( filled => 1, color => 'white' );
$i->arc( color => $blue, r => $n / 2, d1 => 315, d2 => 45 ); # b
$i->arc( color => $red, r => $n / 2, d1 => 225, d2 => 315 ); # r
$i->arc( color => $yellow, r => $n / 2, d1 => 135, d2 => 225 ); # y
$i->arc( color => $green, r => $n / 2, d1 => 45, d2 => 135 ); # g
$i->circle( color => $white, r => $n * .3, filled => 1 );
$i->box(
color => $blue,
ymin => $n * .4,
ymax => $n * .6,
xmin => $n / 2,
xmax => $n * .9,
filled => 1
);
$i->polygon( color => $white, x => [ $n, $n, $n * .6 ], y => [ 0, $n * .4, $n * .4 ] );
$i->write( file => 'g.png' );
Цей пост раніше мав код у формі вихідного зображення. Оскільки це суперечить правилам кодового гольфу, мені довелося його видалити. Перегляньте історію редагувань, якщо хочете поглянути. Я використовував Acme :: EyeDrops, щоб створити це, з формою, яку я створив із зображення, створеного самою програмою, що я перетворив на мистецтво ASCII. Код, який я заплутав, вже був гольф, що можна побачити, замінивши перший eval
на а print
.