Answer to Question #169217 in Python for Chandra sena reddy

Question #169217

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.


The below code is successful code for the question, but only one case is running successfully. sample inputs and outputs are given below :

def ReadMatrix():

  matrix = []

  for i in range(int(input())):

    row = [int(j) for j in input().split()]

    matrix.append(row) 

  return matrix


def RotateMatrix(matrix, degrees):

  n = len(matrix[0])

  rotations = (degrees // 90) % 4

  for r in range(rotations):

    temp_matrix = []

    for i in range(n):

      column = [row[i] for row in matrix]

      column.reverse()

      temp_matrix.append(column)

    matrix = temp_matrix

  return matrix


matrix = ReadMatrix()

rotation = 0


while True:

  line = input().split()

  if line[0] == "-1":

    break;

  elif line[0] == "R":

    rotation += int(line[1])

    matrix = RotateMatrix(matrix, int(line[1]))

  elif line[0] == "U":

     matrix[int(line[1])][int(line[2])] = int(line[3])

     matrix = RotateMatrix(matrix, rotation)

  elif line[0] == "Q":

    print(matrix[int(line[1])][int(line[2])])

  else:

    print("Error: unexpected command '" + line[0] + "'")

    exit(1)


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


But the sample output generating for the sample input - 2 is :

5

8

5


So, please help me by sending code that I have given above after modified, for getting correct output.

Thankyou.


1
Expert's answer
2021-03-11T07:47:11-0500

Here's your solution

def ReadMatrix():
  matrix = []
  for i in range(int(input())):
    row = [int(j) for j in input().split()]
    matrix.append(row) 
  return matrix


def Rotate(a = []):
    a1 = [[] for i in range(len(a))]
    for i in range(len(a)):
        for j in a[i]:
            a1[i].append(j)
    for x in range(len(a)):
        for y in range(len(a[x])):
            a1[y][len(a) - x - 1] = a[x][y]
    return a1

matrix = ReadMatrix()
matrix1 = [[] for i in range(len(matrix))]
for i in range(len(matrix)):
    for j in matrix[i]:
        matrix1[i].append(j)
rotation = 0
while True:
  line = input().split()
  if line[0] == "-1":
    break

  elif line[0] == "R":
    rotation += int(line[1])
    for i in range((int(line[1]) // 90) % 4):
        matrix = Rotate(matrix)

  elif line[0] == "U":
     matrix1[int(line[1])][int(line[2])] = int(line[3])
     matrix = matrix1.copy()
     for i in range((rotation // 90) % 4):
        matrix = Rotate(matrix)

  elif line[0] == "Q":
    print(matrix[int(line[1])][int(line[2])])

  else:
    print("Error: unexpected command '" + line[0] + "'")
    exit(1)

Your RotateMatrix function doing wrong thing at all, ist can solve only one exact type of cases


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