Perl 5, 486 477 476 450 (+7 dla -MImager
flagi) = 457 bajtów
Za sprawą Dady zaoszczędziłem kilka bajtów, używając new
wywołań funkcjonalnych i pozbywając się parenów, a także pop
zamiast $ARGV[0]
ostatniego średnika. Zaoszczędziłem trochę więcej, umieszczając to $n=pop
tam , gdzie jest po raz pierwszy użyte, i używając notacji przestrzeni nazw Perl 4 '
zamiast ::
.
$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')
Wymaga modułu Imager , który należy zainstalować z CPAN. Bierze jedną liczbę całkowitą jako argument wiersza poleceń. Obraz nie jest wygładzony, więc jest trochę brzydki.
Skopiuj poniższy kod do pliku g.pl. Potrzebujemy dodatkowych +7 bajtów na -MImager
flagę, ale to oszczędza kilka bajtów, ponieważ nie jest to konieczne use Imager;
.
$ perl -MImager g.pl 200
Oto różne rozmiary:
N = 10
N = 100
N = 200
Całkowicie nieznany kod jest prosty.
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' );
Ten post poprzednio miał kod w kształcie obrazu wyjściowego. Ponieważ jest to niezgodne z zasadami kodeksu golfowego, musiałem go usunąć. Zobacz historię zmian, jeśli chcesz rzucić okiem. Użyłem Acme :: EyeDrops do stworzenia tego, o kształcie, który utworzyłem z obrazu utworzonego za pomocą samego programu, który przekonwertowałem na grafikę ASCII. Kod I ukrywane już grałem, które mogą być postrzegane przez zastąpienie pierwszy eval
z print
.