-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpiral_matrix.py
81 lines (74 loc) · 1.65 KB
/
Spiral_matrix.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
'''
Created on Jun 12, 2018
@author: rajat.arora07
'''
def spiralNumbers(n):
num=1
row=int(n**0.5)
col=row
#print row,col
#List for matirx.Initialized with all zeros.
l1=[[0 for i in range(col)] for j in range(row)]
#Current Direction is Right.
dir='R'
i=0
j=0
left_y=-1
right_y=col
down_x=row
top_x=0
#print l1
while(num<=n):
if dir=='R':
while j<right_y:
l1[i][j]=num
j+=1
num+=1
if(num>n):
break
top_x=i
j-=1
i+=1
dir='D'
#print 'R',l1,num
if dir=='D':
while i<down_x:
l1[i][j]=num
i+=1
num+=1
if(num>n):
break
dir='L'
right_y=j
i-=1
j-=1
#print 'D',l1,num
if dir=='L':
while j>left_y:
l1[i][j]=num
#print 'L inside',l1,j,left_y
num+=1
j-=1
if(num>n):
break
down_x=i
dir='U'
j+=1
i-=1
#print 'L',l1,num
if dir=='U':
while i>top_x:
l1[i][j]=num
num+=1
i-=1
if(num>n):
break
left_y=j
dir='R'
j+=1
i+=1
#print 'U',l1,num
print l1
#n=int input()
#n*=n
#spiralNumbers(25)