PHP, 628 바이트
편의를 위해 몇 가지 줄 바꿈을 추가했습니다.
$c=$z.create;$h=$c($w=250,$w);$i=$c(530,533);$a=$z.colorallocate;$a($h,$f=255,$f,$f);$a($i,$f,$f,$f);$a($h,229,229,229);$a($h,153,153,$f);
$p=$z.filledpolygon;$p($h,$o=[0,64,0,0,141,141,],3,2);$p($h,[64,0]+$o,3,1);$p($h,$o=[0,$w,0,0,57,57],3,1);$p($h,[$w,0]+$o,3,2);
$c=$z.copy;$r=$z.rotate;$c($i,$h,263,267,0,0,$w,$w);$c($i,$r($h,90,0),263,17,0,0,$w,$w);$c($i,$r($h,180,0),13,17,0,0,$w,$w);$c($i,$r($h,270,0),13,267,0,0,$w,$w);
$s=$z.string;$s($i,5,259,0,N,3);$s($i,5,259,518,S,3);$s($i,5,0,259,W,3);$s($i,5,518,259,E,3);$s($i,5,106,108,NW,3);$s($i,5,406,108,NE,3);$s($i,5,406,410,SE,3);$s($i,5,106,410,SW,3);
imagepng($i,"n.png");
로 실행하십시오 -r
. n.png
이미지가 있는 파일 을 만듭니다 . 단위는 2 픽셀입니다.
나는 시행 착오에 의해 바람의 좌표를 찾았 음을 인정해야하며, 아마도 조금 벗어난 것입니다. 곧 계산을 수행합니다. 그러나 나는 약속한다 : 그들은 바이트 수를 변경하지 않을 것이다.
나의 trignonometry를 발굴하고 고군분투하는 imagecopy
것에 대해 나의 재미를 가지고 있었다 . ..이 얼마나 시시한!
골프 : 많은 트릭; 그러나이 몇 사람은 많이 절약했습니다.
- 함수 이름과 두 값 중 하나를 변수에 할당하면 아마도 가장 큰 영향을 미쳤을 것입니다.
함수 이름을 바꾸기 전에는 계산조차하지 않았습니다.
- 배열
+
연산자 의 마술 은 42 바이트를 주었다.
- 이미지를 브라우저로 전송하는 대신 파일을 쓰면 27 바이트가 절약됩니다.
- 할당을 변수의 첫 번째 사용법으로 옮기는 것이 몇 가지 더 도움이되었습니다.
고장
// create images and allocate colors
$c=imagecreate;
$h=$c($w=250,$w); // helper image - just as large as needed or imagecopy will screw up
$i=$c(530,533); // main image
$a=imagecolorallocate;
$a($h,$f=255,$f,$f); // white is 0
$a($i,$f,$f,$f); // must be assigned to both images
$a($h,229,229,229); // grey is 1
$a($h,153,153,$f); // purple is 2
// draw the south-east quadrant
$p=imagefilledpolygon;
// small triangle purple first
$p($h,$o=[
// point 3: 0.8*e *2
0,64,
// point 1: center
0,0,
// point 2: a=45 degrees, d=200 units
141,141,// d/sqrt(2)=141.421356
],3,2);
// small triangle grey
$p($h,[64,0]+$o,3,1);
// large triangles
$p($h,$o=[
0,$w,
0,0,
57,57 // e*sqrt(2)=56.5685424949
],3,1);
$p($h,[$w,0]+$o,3,2);
// create rose
$c=imagecopy;
$r=imagerotate;
$c($i,$h,263,267,0,0,$w,$w); // copy quadrant to main image (SE)
$c($i,$r($h,90,0),263,17,0,0,$w,$w); // rotate quadrant and copy again (NE)
$c($i,$r($h,180,0),13,17,0,0,$w,$w); // rotate and copy again (NW)
$c($i,$r($h,270,0),13,267,0,0,$w,$w);// rotate and copy a last time (SW)
// add circle
#imageellipse($i,263,267,500,500,2); // grey is now 2: imagecopy shuffled colors
// add names
$s=imagestring;
$s($i,5,259, 0,N,3); // 5 is actually the largest internal font PHP provides
$s($i,5,259,518,S,3); // unassigned colors are black
$s($i,5, 0,259,W,3);
$s($i,5,518,259,E,3);
$s($i,5,106,108,NW,3);
$s($i,5,406,108,NE,3);
$s($i,5,406,410,SE,3);
$s($i,5,106,410,SW,3);
// output
#header("Content-Type:image/png");
#imagepng($i);
imagepng($i,"n.png");