RosettaCodeData/Task/Zig-zag-matrix/Phix/zig-zag-matrix-1.phix
2016-12-05 23:44:36 +01:00

27 lines
561 B
Text

integer n = 9
integer zstart = 0, zend = n*n-1
--integer zstart = 1, zend = n*n
string fmt = sprintf("%%%dd",length(sprintf("%d",zend)))
sequence m = repeat(repeat("??",n),n)
integer x = 1, y = 1, d = -1
while 1 do
m[x][y] = sprintf(fmt,zstart)
if zstart=zend then exit end if
zstart += 1
m[n-x+1][n-y+1] = sprintf(fmt,zend)
zend -= 1
x += d
y -= d
if x<1 then
x += 1
d = -d
elsif y<1 then
y += 1
d = -d
end if
end while
for i=1 to n do
m[i] = join(m[i])
end for
puts(1,join(m,"\n"))