Perl 5, 486 477 476 450 (+7 für -MImager
Flag) = 457 Bytes
Ich habe dank Dada ein paar Bytes gespart, indem ich funktionale new
Aufrufe verwendet und Parens entfernt habe, und indem ich pop
anstelle des $ARGV[0]
letzten Semikolons verwendet habe. Ich habe etwas mehr gespart, indem ich das, $n=pop
wo es zuerst verwendet wurde, und indem ich die Perl 4-Namespace-Notation mit '
anstelle von verwendet habe ::
.
$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')
Hierfür ist das Modul Imager erforderlich , das über CPAN installiert werden muss. Nimmt eine Ganzzahl als Befehlszeilenargument. Das Bild ist nicht geglättet, daher ist es etwas hässlich.
Kopieren Sie den folgenden Code in eine Datei g.pl. Wir brauchen zusätzliche +7 Bytes für das -MImager
Flag, aber es spart ein paar Bytes, weil wir das nicht brauchen use Imager;
.
$ perl -MImager g.pl 200
Hier sind verschiedene Größen:
N = 10
N = 100
N = 200
Der völlig ungolfed Code ist unkompliziert.
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' );
Dieser Beitrag hatte zuvor den Code wie das Ausgabebild geformt. Da das gegen die Regeln für Code Golf verstößt, musste ich es entfernen. Sehen Sie sich den Revisionsverlauf an, wenn Sie einen Blick darauf werfen möchten. Ich habe Acme :: EyeDrops verwendet , um dies mit einer Form zu erstellen, die ich aus einem Bild erstellt habe, das mit dem Programm selbst erstellt wurde, das ich in ASCII-Grafik konvertiert habe. Der Code, den ich verschleiert habe, war bereits golfen, was man sehen kann, wenn man den ersten eval
durch einen ersetzt print
.