Gaussian primes: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (more precise terms) |
Thundergnat (talk | contribs) (→{{header|Raku}}: minor style tweaks) |
||
Line 160: | Line 160: | ||
<lang perl6>use List::Divvy; |
<lang perl6>use List::Divvy; |
||
my @next = { : |
my @next = { :1x, :1y, :2n },; |
||
sub next-interval (Int $int) { |
sub next-interval (Int $int) { |
||
Line 167: | Line 167: | ||
} |
} |
||
my @gaussian |
my @gaussian = lazy gather { |
||
my $interval = 1; |
my $interval = 1; |
||
loop { |
loop { |
||
Line 182: | Line 182: | ||
say "Gaussian primes with a norm less than 100 sorted by norm:"; |
say "Gaussian primes with a norm less than 100 sorted by norm:"; |
||
say @gaussian.&before(*.<n> > 10²).map( { |
say @gaussian.&before(*.<n> > 10²).map( { |
||
my (\i, \j) = .<x |
my (\i, \j) = .<x y>; |
||
flat ((i,j),(-i,j),(-i,-j),(i,-j),(j,i),(-j,i),(-j,-i),(j,-i)).map: { |
flat ((i,j),(-i,j),(-i,-j),(i,-j),(j,i),(-j,i),(-j,-i),(j,-i)).map: { |
||
.[0] ?? .[1] ?? (sprintf "%d%s%di", .[0], (.[1] >= 0 ?? '+' !! ''), .[1]) !! .[0] !! "{.[1]}i" |
.[0] ?? .[1] ?? (sprintf "%d%s%di", .[0], (.[1] >= 0 ?? '+' !! ''), .[1]) !! .[0] !! "{.[1]}i" |
||
Line 192: | Line 192: | ||
my @points = unique flat @gaussian.&before(*.<n> > 150²).map: { |
my @points = unique flat @gaussian.&before(*.<n> > 150²).map: { |
||
my (\i, \j) = .<x |
my (\i, \j) = .<x y>; |
||
do for (i,j),(-i,j),(-i,-j),(i,-j),(j,i),(-j,i),(-j,-i),(j,-i) { |
do for (i,j),(-i,j),(-i,-j),(i,-j),(j,i),(-j,i),(-j,-i),(j,-i) { |
||
:use['xlink:href'=>'#point', 'transform'=>"translate({500 + 3 |
:use['xlink:href'=>'#point', 'transform'=>"translate({500 + 3 × .[0]},{500 + 3 × .[1]})"] |
||
} |
} |
||
} |
} |
||
Line 202: | Line 202: | ||
:width<1000>, :height<1000>, |
:width<1000>, :height<1000>, |
||
:rect[:width<100%>, :height<100%>, :style<fill:black;>], |
:rect[:width<100%>, :height<100%>, :style<fill:black;>], |
||
:defs[:g[:id<point>, :circle[ |
:defs[:g[:id<point>, :circle[:0cx, :0cy, :2r, :fill('gold')]]], |
||
|@points |
|@points |
||
], |
], |