forked from minaevd/hackerrank-tasks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrotateMatrix.py
More file actions
executable file
·67 lines (44 loc) · 1.24 KB
/
Copy pathrotateMatrix.py
File metadata and controls
executable file
·67 lines (44 loc) · 1.24 KB
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
def print_matrix(a):
for i in xrange(m):
for j in xrange(n):
print a[i][j],
print
def rotate_one_circle(a,i,rows,cols):
# print_matrix(a)
# print "rotate i'th row"
save_lt = a[i][i]
save_lb = a[rows-i-1][i]
save_rb = a[rows-i-1][cols-i-1]
# save_rt = a[i][cols-i-1]
for j in range(i+1,cols-i):
a[i][j-1] = a[i][j]
# print_matrix(a)
# print "rotate i'th column"
for j in reversed(range(i+2, rows-i)):
a[j][i] = a[j-1][i]
a[i+1][i] = save_lt
# print_matrix(a)
# print "rotate (rows-i)'th row"
for j in reversed(range(i+2, cols-i)):
a[rows-i-1][j] = a[rows-i-1][j-1]
a[rows-i-1][i+1] = save_lb
# print_matrix(a)
# print "rotate (cols-i)'th column"
for j in range(i+1, rows-i-1):
a[j-1][cols-i-1] = a[j][cols-i-1]
a[rows-i-2][cols-i-1] = save_rb
# print_matrix(a)
return a
# print "=== main ==="
m,n,r = map(int, raw_input().strip().split())
a = list()
for i in xrange(m):
a.append(list(map(int, raw_input().strip().split())))
if(m<n):
max_level = m/2
else:
max_level = n/2
for i in xrange(r):
for level in xrange(max_level):
a = rotate_one_circle(a,level,m,n)
print_matrix(a)