Answer to Question #231270 in Python for bhuvana

Question #231270

You are given a square matrix A of dimensions NxN. You need to apply the below given 3 operations on the matrix A.


Rotation: It is represented as R S where S is an integer in {90, 180, 270, 360, 450, ...} which denotes the number of degrees to rotate. You need to rotate the matrix A by angle S in the clockwise direction. The angle of rotation(S) will always be in multiples of 90 degrees.


Update: It is represented as U X Y Z. In initial matrix A (as given in input), you need to update the element at row index X and column index Y with value Z.

After the update, all the previous rotation operations have to be applied to the updated initial matrix.


1
Expert's answer
2021-09-07T23:21:52-0400
from ​copy import deepcopy


def rotate90_clockwise(mat):
   ​return [list(reversed(col)) for col in zip(*mat)]


def rotate(mat, _angle):
   ​_angle = _angle % 360 // 90
   ​for _ in range(_angle):
       ​mat = rotate90_clockwise(mat)
   ​return mat


def update(mat, rot_list, _args):
   ​i, j, value = map(int, _args)
   ​mat[i][j] = str(value)
   ​mat = rotate(mat, sum(rot_list))
   ​return mat


def query(mat, _args):
   ​i, j = map(int, _args)
   ​print(mat[i][j])


if ​__name__ == "__main__":
   ​n = int(input())
   ​matrix = []
   ​for _ in range(n):
       ​matrix.append(
           ​list(input().split())
       ​)
   ​handle = ""
   ​rotation_list = []
   ​initial_matrix = deepcopy(matrix)
   ​while handle != "-1":
       ​handle, *args = input().split()
       ​if handle == "R":
           ​angle = int(args[0])
           ​rotation_list.append(angle)
           ​matrix = rotate(matrix, angle)
       ​elif handle == "U":
           ​matrix = update(deepcopy(initial_matrix), rotation_list, args)
       ​elif handle == "Q":
           ​query(matrix, args)

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS