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


S = 5
 
i = 1
j = 1
 
For e = 0 To (S*S)-1
  @((i-1) * S + (j-1)) = e
 
  If (i + j) % 2 = 0 Then
 
    If j < S Then
      j = j + 1
    Else
      i = i + 2
    EndIf
 
    If i > 1 Then
      i = i - 1
    EndIf
  Else
 
    If i < S
      i = i + 1
    Else
      j = j + 2
    EndIf
 
    If j > 1
      j = j - 1
    EndIf
  EndIf
Next
 
For r = 0 To S-1
  For c = 0 To S-1
    Print Using "___#";@(r * S + c);
  Next
  Print
Next