31 lines
517 B
Text
31 lines
517 B
Text
func sumto n .
|
|
return n * (n + 1) div 2
|
|
.
|
|
func coord2num row col n .
|
|
diag = col + row
|
|
if diag < n
|
|
start = sumto diag
|
|
if diag mod 2 = 0
|
|
offs = col
|
|
else
|
|
offs = row
|
|
.
|
|
else
|
|
start = n * n - sumto (2 * n - 1 - diag)
|
|
offs = n - 1
|
|
if diag mod 2 = 0
|
|
offs -= row
|
|
else
|
|
offs -= col
|
|
.
|
|
.
|
|
return start + offs
|
|
.
|
|
n = 6
|
|
numfmt 3 0
|
|
for row = 0 to n - 1
|
|
for col = 0 to n - 1
|
|
write coord2num row col n
|
|
.
|
|
print ""
|
|
.
|