#!/usr/bin/env python
#
# The problem is defined here - http://rosettacode.org/wiki/Spiral_matrix
def make_spiral(n):
spiral= []
for i in range(n):
spiral.append([])
for j in range(n):
spiral[i].append(None)
maxi=maxj=n-1
mini=minj=i=j=0
for c in range(1, n*n+1):
spiral[i][j]= c
#print c, i, j, mini, minj, maxi, maxj
if i==mini and j<maxj:
j+= 1
elif j==maxj and i<maxi:
i+= 1
elif i==maxi and j>minj:
j-= 1
elif j==minj and i>mini:
i-= 1
if i==maxi and j==maxj:
mini+= 1
elif i==maxi and j==minj:
maxj-= 1
elif i==mini and j==minj:
maxi-= 1
elif i==mini and j==maxj and mini>0:
minj+= 1
return spiral
for i in range(1, 7):
s= make_spiral(i)
for r in s:
print r
Don't think it's a very good algorithm, but it gets the job done.
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.