19 lines
592 B
Text
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"))
|