#!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__