Answer to Question #167392 in Python for prathyusha

Question #167392

Matrix Rotations

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. Input


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 1

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

Sample Output 1

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 Output 2

5

8

8



11

46


output:

Errors/Warnings:

Traceback (most recent call last):

 File "main.py", line 46, in <module>

  query(matrix, args)

 File "main.py", line 23, in query

  i, j = map(int, _args)

ValueError: too many values to unpack (expected 2)


Expected:

11

46

23



1
Expert's answer
2021-04-01T07:50:04-0400
def rotateClockwise(A,degree):
    degree=degree%360
    iter =degree/90
    N = len(A[0])

    while(iter):    
        for i in range(N // 2):
            for j in range(i, N - i - 1):
                temp = A[i][j]
                A[i][j] = A[N - 1 - j][i]
                A[N - 1 - j][i] = A[N - 1 - i][N - 1 - j]
                A[N - 1 - i][N - 1 - j] = A[j][N - 1 - i]
                A[j][N - 1 - i] = temp
        iter-=1

# Function to print the matrix
def printMatrix(A,x,y):
    print(A[x][y])
    
            
def updateMatrix(A,x,y,z):
    A[x][y]=z


def main():
    # Initialize matrix 
    matrix =[] 
    n = int(input()) 
    for i in range(n):
        row = input().split()
        for j in range(len(row)):
            row[j] = int(row[j])
        matrix.append(row)    
    
    choice = input()
    if(choice=='-1'):exit()
    while(1):
        if(choice[0]=='Q'):
            printMatrix(matrix,int(choice[2]),int(choice[4]))
        elif(choice[0] =='U'):
            updateMatrix(matrix,int(choice[2]),int(choice[4]),int(choice[6]))
        elif(choice[0] =='R'):
            str =choice[1:]
            rotateClockwise(matrix,int(str))
        choice =input()

        if(choice=='-1'): exit()
    

main()

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

H M
01.04.21, 14:12

when I'm running this code for sample output2 it is giving the output 5 8 5 instead of 5 8 8....pls tell me why??

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS