25 lines
555 B
Text
25 lines
555 B
Text
procedure main(args)
|
|
n := integer(!args) | 5
|
|
every !(A := list(n)) := list(n)
|
|
A := zigzag(A)
|
|
show(A)
|
|
end
|
|
|
|
procedure show(A)
|
|
every writes(right(!A,5) | "\n")
|
|
end
|
|
|
|
procedure zigzag(A)
|
|
x := [0,0]
|
|
every i := 0 to (*A^2 -1) do {
|
|
x := nextIndices(*A, x)
|
|
A[x[1]][x[2]] := i
|
|
}
|
|
return A
|
|
end
|
|
|
|
procedure nextIndices(n, x)
|
|
return if (x[1]+x[2])%2 = 0
|
|
then if x[2] = n then [x[1]+1, x[2]] else [max(1, x[1]-1), x[2]+1]
|
|
else if x[1] = n then [x[1], x[2]+1] else [x[1]+1, max(1, x[2]-1)]
|
|
end
|