27 lines
561 B
Text
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"))
|