The stupid question is the question not asked PerlMonks

### Re: Spiraling integers

by ambrus (Abbot)
 on Aug 28, 2005 at 11:08 UTC ( #487246=note: print w/replies, xml ) Need Help??

Here's my perl solution, which is more or less the translation of the J solution:

```#!perl

use warnings;
use strict;
use List::Util "max";
use Math::Complex; # what for?

my \$n = int(\$ARGV[-1] || 5);
my(\$i, \$j, \$k, \$x, \$y, @l, @a, @v, @r, \$wd, \$fmt);
for \$i (0 .. \$n - 1) {
\$x = \$i - (\$n - 1)/2;
for \$j (0 .. \$n - 1) {
\$y = \$j - (\$n - 1)/2;
\$k = \$i * \$n + \$j;
\$l[\$k] = -max(abs(\$x), abs(\$y));
\$a[\$k] = -arg(cplx(1, -1) * cplx(\$x, \$y));
}
}
@v = sort { \$l[\$a] <=> \$l[\$b] || \$a[\$a] <=> \$a[\$b] } 0 .. \$n**2 - 1;
@r[@v] = 1 .. \$n**2;
\$wd = length(\$n**2);
\$fmt = join(" ", ("%\${wd}d") x \$n) . "\n";
for \$i (0 .. \$n - 1) {
printf \$fmt, @r[\$i * \$n .. \$i * \$n + \$n - 1];
}

__END__

Create A New User
Node Status?
node history
Node Type: note [id://487246]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2019-10-23 01:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In 2019 the site I miss most is:

Results (57 votes). Check out past polls.

Notices?