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 ((i% + j%) AND 1) = 0 THEN
          IF j% < Size% j% += 1 ELSE i% += 2
          IF i% > 1 i% -= 1
        ELSE
          IF i% < Size% i% += 1 ELSE j% += 2
          IF j% > 1 j% -= 1
        ENDIF
      NEXT
 
      @% = &904
      FOR row% = 0 TO Size%-1
        FOR col% = 0 TO Size%-1
          PRINT array%(row%,col%);
        NEXT
        PRINT
      NEXT row%