Task

Produce a zig-zag array.



A   zig-zag   array is a square arrangement of the first   N2   natural numbers,   where the

numbers increase sequentially as you zig-zag along the array's   anti-diagonals.

For a graphical representation, see   JPG zigzag   (JPG uses such arrays to encode images).



For example, given   5,   produce this array:

 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



Related tasks

   Spiral matrix
   Identity matrix
   Ulam spiral (for primes)


See also

   Wiktionary entry:   anti-diagonals


Size = 5
DIM array(Size-1, Size-1)
 
i = 1
j = 1
FOR e = 0 TO Size^2-1
  array(i-1, j-1) = e
  IF and((i + j), 1) = 0 THEN
    IF j < Size then j = j + 1 ELSE i = i + 2 end if
    IF i > 1 i = i - 1
  ELSE
    IF i < Size then i = i + 1 ELSE j = j + 2 end if
    IF j > 1 j = j - 1
  ENDIF
NEXT e
 
FOR row = 0 TO Size-1
  FOR col = 0 TO Size-1
    PRINT array(row,col) USING "##";
  NEXT col
  PRINT
NEXT row