36 lines
653 B
Text
36 lines
653 B
Text
ZigZag := function(n)
|
|
local a, i, j, k;
|
|
a := NullMat(n, n);
|
|
i := 1;
|
|
j := 1;
|
|
for k in [0 .. n*n - 1] do
|
|
a[i][j] := k;
|
|
if (i + j) mod 2 = 0 then
|
|
if j < n then
|
|
j := j + 1;
|
|
else
|
|
i := i + 2;
|
|
fi;
|
|
if i > 1 then
|
|
i := i - 1;
|
|
fi;
|
|
else
|
|
if i < n then
|
|
i := i + 1;
|
|
else
|
|
j := j + 2;
|
|
fi;
|
|
if j > 1 then
|
|
j := j - 1;
|
|
fi;
|
|
fi;
|
|
od;
|
|
return a;
|
|
end;
|
|
|
|
PrintArray(ZigZag(5));
|
|
# [ [ 0, 1, 5, 6, 14 ],
|
|
# [ 2, 4, 7, 13, 15 ],
|
|
# [ 3, 8, 12, 16, 21 ],
|
|
# [ 9, 11, 17, 20, 22 ],
|
|
# [ 10, 18, 19, 23, 24 ] ]
|