Hello. My instructor want me to write a magic Square code. And here is what the square is supposed to print:
11 18 25 2 9
10 12 19 21 3
4 6 13 20 22
23 5 7 14 16
17 24 1 8 15
Here is my current output.
[[16, 18, 25, 2, 9], [10, 12, 19, 0, 3], [4, 6, 13, 20, 22], [23, 5, 7, 14, 21], [17, 24, 1, 8, 15]]
I am not working on the formatting of the output right now, but was wondering why 16 prints on the top first column first row. Apparently, the code has overidden the 11 originally written for the place.
here is my code.
def magicSquare(n):
grid = [ [ 0 for c in xrange(n) ] for r in xrange(n) ]
row=n-1
col=n/2
n2=n*n
startNum=1
r, c= 0,0
n2=n**2
grid[row][col]=startNum
while startNum != n2:
startNum=startNum+1
if (row + 1) <n:
r=row+1
else:
r=0
if (col+ 1) <n:
c=col+1
else:
c=0
if grid[r][c]:
if (row+1)<n:
r=row-1
if grid[r][col]:
break
c=col
grid[r][c]=startNum
row=r
col=c
for r in xrange(n):
for c in xrange(n):
print "%2d" % grid[r][c],
print
return grid
Yes, I searched the forums for the code snippets posted.