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.
Querying: It is represented as Q K L. You need to print the value at row index K and column index L of the matrix A.
Sample Input 1:
The first line contains a single integer N.
Next N lines contain N space-separated integers Aij (i - index of the row, j - index of the column).
Next lines contain various operations on the array. Each operation on each line (Beginning either with R, U or Q).
-1 will represent the end of input.Output
For each Query operation print the element present at row index K and colum index L of the matrix in its current state.Explanation
For Input:
2
1 2
3 4
R 90
Q 0 0
Q 0 1
R 90
Q 0 0
U 0 0 6
Q 1 1
-1
Initial Matrix
1 2
3 4
For R 90, clockwise rotation by 90 degrees, the matrix will become
3 1
4 2
For Q 0 0, print the element at row index 0 and column index 0 of A, which is 3.
For Q 0 1, print the element at row index 0 and column index 1 of A, which is 1.
Again for R 90, clockwise rotation by 90 degrees, the matrix will become
4 3
2 1
For Q 0 0, print the element at row index 0 and column index 0 of A, which is 4.
For U 0 0 6, update the value at row index 0 and column index 1 in the initial matrix to 6. So the updated matrix will be,
6 2
3 4
After updating, we need to rotate the matrix by sum of all rotation angles applied till now(i.e. R 90 and R 90 => 90 + 90 => 180 degrees in clockwise direction).
After rotation the matrix will now become
4 3
2 6
Next for Q 1 1, print the element at row index 1 and column index 1 of A, which is 6.
output
3
1
4
6
sample input:2
2
5 6
7 8
R 90
Q 0 1
R 270
Q 1 1
R 180
U 0 0 4
Q 0 0
-1
sample ouput 2:
5
8
8
Code that i wrote is:
n=int(input())
matrix=[]
for i in range(n):
a=input().split()
matrix+=[a]
def transpose_matrix(matrix):
for i in range(len(matrix)):
for j in range(i,len(matrix)):
matrix[i][j], matrix[j][i] = matrix[j][i],matrix[i][j]
def reverse_rows(matrix):
for i in range (len(matrix)):
k = len(matrix) - 1;
for j in range(0,k):
matrix[i][j], matrix[i][k] = matrix[i][k], matrix[i][j]
k = k - 1
def rotation(angle):
number=int(angle)/90
number=int(number)
for i in range(number):
transpose_matrix(matrix)
reverse_rows(matrix)
angle=0
while True:
para=input()
if para=="-1":
break
else:
parameter=para.split()
if parameter[0]=="R":
rotation(int(parameter[1]))
angle+=int(parameter[1])
elif parameter[0]=="Q":
a=int(parameter[1])
b=int(parameter[2])
print(matrix[a][b])
elif parameter[0]=="U":
a=int(parameter[1])
b=int(parameter[2])
c=int(parameter[3])
matrix[a][b] = c
rotation(angle)
but im not getting the desired output for second input.... can anybody share the working code for this.
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)
Comments
for this code im getting errors... can anybody share the working code
Leave a comment