RosettaCodeData/Task/Zig-zag-matrix/F-Sharp/zig-zag-matrix-1.fs

15 lines
537 B
Forth

//Produce a zig zag matrix - Nigel Galloway: April 7th., 2015
let zz l a =
let N = Array2D.create l a 0
let rec gng (n, i, g, e) =
N.[n,i] <- g
match e with
| _ when i=a-1 && n=l-1 -> N
| 1 when n = l-1 -> gng (n, i+1, g+1, 2)
| 2 when i = a-1 -> gng (n+1, i, g+1, 1)
| 1 when i = 0 -> gng (n+1, 0, g+1, 2)
| 2 when n = 0 -> gng (0, i+1, g+1, 1)
| 1 -> gng (n+1, i-1, g+1, 1)
| _ -> gng (n-1, i+1, g+1, 2)
gng (0, 0, 0, 2)