45 lines
951 B
Text
45 lines
951 B
Text
$ include "seed7_05.s7i";
|
|
|
|
const type: matrix is array array integer;
|
|
|
|
const func matrix: zigzag (in integer: size) is func
|
|
result
|
|
var matrix: s is matrix.value;
|
|
local
|
|
var integer: i is 1;
|
|
var integer: j is 1;
|
|
var integer: d is -1;
|
|
var integer: max is 0;
|
|
var integer: n is 0;
|
|
begin
|
|
s := size times size times 0;
|
|
max := size ** 2;
|
|
for n range 1 to max div 2 + 1 do
|
|
s[i][j] := n;
|
|
s[size - i + 1][size - j + 1] := max - n + 1;
|
|
i +:= d;
|
|
j -:= d;
|
|
if i < 1 then
|
|
incr(i);
|
|
d := -d;
|
|
elsif j < 1 then
|
|
incr(j);
|
|
d := -d;
|
|
end if;
|
|
end for;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var matrix: s is matrix.value;
|
|
var integer: i is 0;
|
|
var integer: num is 0;
|
|
begin
|
|
s := zigzag(7);
|
|
for i range 1 to length(s) do
|
|
for num range s[i] do
|
|
write(num lpad 4);
|
|
end for;
|
|
writeln;
|
|
end for;
|
|
end func;
|