RosettaCodeData/Task/Zig-zag-matrix/EMal/zig-zag-matrix.emal
2026-04-30 12:34:36 -04:00

30 lines
713 B
Text

fun zigzag ← List by int n
List matrix ← List[].with(n)
for int y ← 0; y < n; y++ do matrix[y] ← int[].with(n) end
int y, x ← 1
for int value ← 0; value < n²; value++
matrix[y - 1][x - 1] ← value
if (y + x) % 2 æ 0
if x < n do x++
else do y +← 2 end
if y > 1 do y-- end
else
if y < n do y++
else do x +← 2 end
if x > 1 do x-- end
end
end
return matrix
end
fun dump ← void by List matrix
int max ← length(text!(matrix.length²)) + 1
for each List row in matrix
for each int value in row
write(" " * (max - length(text!value)) + value)
end
writeLine()
end
end
dump(zigzag(5))
writeLine()
dump(zigzag(10))