Matrix Rotation Hackerrank Solution
This is the solution for the problem Matrix Rotation in Python, found in the algorithm domain of Hackerrank. You are given a 2D matrix, A, of dimension MxN and a positive integer R. You have to rotate the matrix R times and print the resultant matrix. Rotation should be in anti-clockwise direction.
Screenshot[Demo]
The Code
Got anything to say, Please comment them here ! :)
Screenshot[Demo]
The Code
def rotateMat(N,M,l,rot,rin,mat):
# rotate each layer
for level in range(l):
r = rot % len(rin[level])
rin[level] = rin[level][r:] + rin[level][:r]
# fill the array with the rotated elements
for level in range(l):
top = (N-1) - 2 * level
side = (M-1) - 2 * level
for i in range(top):
mat[level][level + i] = rin[level].pop(0) # right
for j in range(side):
mat[level + j][level + top] = rin[level].pop(0) # down
for i in range(top):
mat[level + side][level + top - i] = rin[level].pop(0) # left
for j in range(side):
mat[level + side - j][level] = rin[level].pop(0) # up
def flatRings(M,N,mat,rot):
# flatten the rings into a list
l = int(min(N, M)/2)
rin = [[] for lay in range(l)]
for level in range(l):
top = (N-1) - 2 * level
side = (M-1) - 2 * level
for i in range(top): # right
rin[level].append(mat[level][level + i])
for j in range(side): # down
rin[level].append(mat[level + j][level + top])
for i in range(top): # left
rin[level].append(mat[level + side][level + top - i])
for j in range(side): # up
rin[level].append(mat[level + side - j][level])
rotateMat(N,M,l,rot,rin,mat)
# input
M, N, rot = map(int, input().split())
mat = []
for i in range(M):
mat.append(list(map(int, input().split())))
flatRings(M,N,mat,rot)
# print the rotated matrix
for row in range(M):
for col in range(N):
print(mat[row][col], "", end="")
print()
Got anything to say, Please comment them here ! :)

Comments
Post a Comment