|
|
@ -36,6 +36,9 @@ def magic(n):
|
|
|
|
[30, 5, 34, 12, 14, 16],
|
|
|
|
[30, 5, 34, 12, 14, 16],
|
|
|
|
[ 4, 36, 29, 13, 18, 11]])
|
|
|
|
[ 4, 36, 29, 13, 18, 11]])
|
|
|
|
'''
|
|
|
|
'''
|
|
|
|
|
|
|
|
if (n<3):
|
|
|
|
|
|
|
|
raise ValueError('n must be greater than 2.')
|
|
|
|
|
|
|
|
|
|
|
|
if np.mod(n,2)==1: # odd order
|
|
|
|
if np.mod(n,2)==1: # odd order
|
|
|
|
ix = np.arange(n) + 1
|
|
|
|
ix = np.arange(n) + 1
|
|
|
|
J, I = np.meshgrid(ix, ix)
|
|
|
|
J, I = np.meshgrid(ix, ix)
|
|
|
@ -69,10 +72,10 @@ def magic(n):
|
|
|
|
M[i][j] = M[i+p][j]
|
|
|
|
M[i][j] = M[i+p][j]
|
|
|
|
M[i+p][j] = temp;
|
|
|
|
M[i+p][j] = temp;
|
|
|
|
|
|
|
|
|
|
|
|
j=i;
|
|
|
|
j=i
|
|
|
|
temp=M[i+p][j];
|
|
|
|
temp=M[i+p][j]
|
|
|
|
M[i+p][j]=M[i][j];
|
|
|
|
M[i+p][j]=M[i][j]
|
|
|
|
M[i][j]=temp;
|
|
|
|
M[i][j]=temp
|
|
|
|
|
|
|
|
|
|
|
|
return M
|
|
|
|
return M
|
|
|
|
|
|
|
|
|
|
|
|