RosettaCodeData/Task/Spiral-matrix/Phix/spiral-matrix.phix
2016-12-05 23:44:36 +01:00

19 lines
592 B
Text

integer n = 5
string fmt = sprintf("%%%dd",length(sprintf("%d",n*n)))
integer x = 1, y = 0, c = 0, dx = 0, dy = 1, len = n
sequence m = repeat(repeat("??",n),n)
for i=1 to 2*n do -- 2n runs..
for j=1 to len do -- of a length...
x += dx
y += dy
m[x][y] = sprintf(fmt,c)
c += 1
end for
len -= and_bits(i,1) -- ..-1 every other
{dx,dy} = {dy,-dx} -- in new direction
end for
for i=1 to n do
m[i] = join(m[i])
end for
puts(1,join(m,"\n"))