In [166]:
import numpy as np
n = 1001
In [169]:
a = np.zeros( (n, n), np.int32)
x, y = int(n/2), int(n/2)
cx, cy = x, y
dire = 0
dim = 1
for i in range(1,n**2+1):
a[y, x] = i
if dim ** 2 == i :
dim += 1
if dire == 0:
if x < cx + dim /2:
x += 1
else:
dire = 1
y += 1
elif dire == 1:
if y < cy + dim /2:
y += 1
else:
dire = 2
x -= 1
elif dire == 2:
if x > cx - int(dim/2):
x -= 1
else:
dire = 3
y -= 1
elif dire == 3:
if y > cy - int(dim /2):
y -= 1
else:
dire = 0
x += 1
print(a, '\nsec=', a[::-1,:].diagonal(), '\nmain',a.diagonal())
print(-1 + sum(a[::-1,:].diagonal()) + sum( a.diagonal()))