RosettaCodeData/Task/Zig-zag-matrix/Seed7/zig-zag-matrix.seed7
Ingy döt Net 68f8f3e56b all tasks
2013-04-11 01:07:29 -07:00

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;