 go ahead... be a heretic PerlMonks

Re: Spiraling integers

by ambrus (Abbot)
 on Aug 29, 2005 at 12:38 UTC ( #487391=note: print w/replies, xml ) Need Help??

in reply to Spiraling integers

I am sure there is a mathematical equation that would simplify this

Well, here's it. I hope it works. Has someone written a test program that compares the outputs of different solutions in this thread with each other?

#!perl use warnings; use strict; my(\$n, \$wd, \$fmt, \$x, \$y, \$r); \$n = int(\$ARGV[-1] || 5); \$wd = length(\$n**2); \$fmt = "%\${wd}d "; for \$x (0 .. \$n - 1) { for \$y (0 .. \$n - 1) { \$r = \$x <= \$y ? \$x + \$y <= \$n - 1 ? -4*\$x**2 + 4*\$n*\$x - \$x + \$y + 1 : -4*\$y**2 + 4*\$n*\$y - 5*\$y + \$x + 2*\$n +- 1 : \$x + \$y <= \$n - 1 ? -4*\$y**2 + 4*\$n*\$y - 7*\$y - \$x + 4*\$n +- 3 : -4*\$x**2 + 4*\$n*\$x - 3*\$x - \$y + 2*\$n +- 1; printf \$fmt, \$r; } print "\n"; } __END__

Replies are listed 'Best First'.
Re^2: Spiraling integers
by lidden (Curate) on Aug 29, 2005 at 12:56 UTC
Well I used this program I did over a year ago to compare numbers from diffrent programs. I would have done it diffrently now so don't complan too much about the sub optimal stuff.
#!/usr/bin/perl -w use strict; use constant true => 1; use constant false => 0; use Perl6::Say; use Perl6::Variables; exit say 'You must give at least two file names as arguments.' unless +@ARGV > 1; my \$tmp_path = '/tmp/same_or.tmp'; my @files; my \$i = 0; my @num; foreach my \$file (@ARGV) { open IN, \$file or die "Damn \$file: \$!"; open OUT, '>', \$tmp_path . \$i or die \$!; my \$num = 0; while (<IN>) { s/^\s+//; my @text = split /\s+/, \$_; \$num += scalar @text; foreach (@text) { say OUT \$_; } } close IN or die \$!; close OUT or die \$!; @num[ \$i ] = \$num; push @files, \$tmp_path . \$i; \$i++; } my \$first = shift @files; say "\@num = @num"; \$i = 1; foreach my \$file (@files) { open IN1, \$first or die \$!; open IN2, \$file or die \$!; say "\@num[\$i] = @num[\$i]"; unless ( @num[ 0 ] == @num[ \$i ] ) { unlink \$first; unlink @files; exit print "Different length\n"; } while (<IN1>) { # (my \$i = 0; \$i < @first; \$i++){ my \$in2 = <IN2>; unless ( \$_ == \$in2 ) { unlink \$first; unlink @files; chomp; chomp \$in2; exit print "Numbers \$_ == \$in2 failed\n"; } } close IN1 or die \$!; close IN2 or die \$!; \$i++; } print "Same \n"; unlink \$first; unlink @files;

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (9)
As of 2019-10-21 13:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In 2019 the site I miss most is:

Results (51 votes). Check out past polls.

Notices?