Gaussian primes: Difference between revisions

Content added Content deleted
m (more precise terms)
(→‎{{header|Raku}}: minor style tweaks)
Line 160: Line 160:
<lang perl6>use List::Divvy;
<lang perl6>use List::Divvy;


my @next = { :x(1), :y(1), :2n },;
my @next = { :1x, :1y, :2n },;


sub next-interval (Int $int) {
sub next-interval (Int $int) {
Line 167: Line 167:
}
}


my @gaussian = lazy gather {
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>, .<y>;
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>, .<y>;
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 * .[0]},{500 + 3 * .[1]})"]
: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[ :cx(0), :cy(0), :r("2"), :fill('gold') ]]],
:defs[:g[:id<point>, :circle[:0cx, :0cy, :2r, :fill('gold')]]],
|@points
|@points
],
],