Post History
Perl, 212 bytes Takes number on stdin. Prints grid on stdout. perl -nlE'sub p{($a,$b)=map$_+$r,@_;map{$g[$_][$b]=$g[$_][$g-$b]="#"}$a,$g-$a}$x=$r=$_;$g=2*$r;@g=map[(".")x($g+1)],0..$g;$t=$r/16;wh...
#1: Initial revision
# Perl, 212 bytes
Takes number on stdin. Prints grid on stdout.
```
perl -nlE'sub p{($a,$b)=map$_+$r,@_;map{$g[$_][$b]=$g[$_][$g-$b]="#"}$a,$g-$a}$x=$r=$_;$g=2*$r;@g=map[(".")x($g+1)],0..$g;$t=$r/16;while($y<=$x){p$x,$y;p$y,$x;$t+=++$y;$T=$t-$x;if($T>=0){$t=$T;--$x}}say@$_ for@g'
```
Comments:
```
perl -nlE'
sub p {
($a,$b) = map $_+$r, @_; # translate axes (-r,r)->(0,2r)
# mark 2 quadrants
map { $g[$_][$b] = $g[$_][$g-$b] = "#" } $a,$g-$a
}
# create empty grid
$x = $r = $_;
$g = 2*$r;
@g = map [ (".")x($g+1) ], 0..$g;
# midpoint circle algorithm - Jesko's method
# https://en.wikipedia.org/wiki/Midpoint_circle_algorithm
$t = $r/16;
while ($y<=$x) {
p $x,$y; p $y,$x; # mark grid
$t+ = ++$y;
$T = $t-$x;
if ($T>=0) {
$t = $T;
--$x
}
}
# print grid
say @$_ for @g
'
```
[Try it online!][TIO-mmsgc8kw]
[TIO-mmsgc8kw]: https://tio.run/##NY/NaoQwAITveYqQDqzWn6rb3Uua4jMUb64EBU0FV0NUqoivXhsPvc03zAyMrk13O@axpk1dTrOp6WUs1wsn2rT9RNmj/6KCQj56xglWEfFjnCuqNwelj8oVz1JDejB@KrnVG1QOWeSoCvEvVXASe2H72bFU7lgEjIDkUCJ5heGpOpdyh4XMXRwoL3YLPwpDKI7JZt/iO//5brvawfohsLibxuJj5Rqrj8WGPOF5lpEJTIF12sZB9ikidzsHMh5Yc9/tuRSSNoNJ1XHEJCFX8k5uJI5IEpHfQU/t0I9H0Hd/ "Perl 5 – Try It Online"
