PHP, 186 184 196 byte
imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);for(;$a<$p=2*M_PI;)for($b=$a+=$p/=$argv[1];$b>0;)imageline($i,(1+cos($a))*$r=300,$r+$r*sin($a),$r+$r*cos($b-=$p),$r+$r*sin($b),1);imagepng($i);
ghi hình ảnh vào STDOUT
phá vỡ
// create image with white background
imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);
// loop angle A from 0 to 2*PI
for(;$a<$p=2*M_PI;)
// loop angle B from A down to 0
for($b=$a+=$p/=$argv[1];$b;) // ($a pre-increment)
// draw black line from A to B
imageline($i, // draw line
(1+cos($a))*$r=300,$r+$r*sin($a), // from A
$r+$r*cos($b-=$p),$r+$r*sin($b), // to B ($b pre-decrement)
1 // undefined color=black
);
// output
imagepng($i);
-12 byte cho cố định n=20
Thay thế $p=2*M_PI
bằng 6
(-8), /=$argv[1]
bằng =M_PI/10
(-2) và $b>0
bằng $b
(-2)
Sử dụng chính xác PI / 10 không làm tổn thương. Với .3142
, các lỗi làm tròn từ phiên bản tham số vẫn còn, nhưng với M_PI/10
chúng đã biến mất và tôi có thể kiểm tra $b
(<> 0) thay vì $b>0
. Tôi có thể đã lưu hai byte với .314
, nhưng điều đó sẽ đặt ra các điểm.
Giới hạn $a<6
này đủ chính xác cho 20 điểm.
Đã sửa lỗi 174 byte n=314
imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);for(;$a<314;)for($b=$a++;$b--;)imageline($i,(1+cos($a))*$r=300,$r+$r*sin($a),$r+$r*cos($b),$r+$r*sin($b),1);imagepng($i);
Sử dụng 314 điểm dẫn đến một vòng tròn được lấp đầy trong độ phân giải đó (cũng như 136.140, mọi số chẵn trên đó và mọi thứ trên 317).
n
và vẽ các đường chon
điểm.