Answer to Question #169731 in Python for srikanth

Question #169731
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
1
Expert's answer
2021-03-09T04:51:08-0500
matrix = []
total_rotate = 0
n = int(input('Enter the dimension of the table- '))
for item in range(n):
    line = input(f'Enter {item+1} table line {n} space-separated integers- ')
    matrix.append(list(map(int, line.split())))

while True:
    pos_check = input('Enter the position of the matrix element to check ' 
                      'or 1 to complete the job -')
    if pos_check == '1':
        break
    k, l = list(map(int, pos_check.split()))
    operation = input('Enter a matrix operation with parameters- ').split()
    if operation[0] == 'R':
        count_rotate = int(operation[1])//90
        total_rotate += count_rotate
        # a full turn is 4 rotations
        for item in range(count_rotate % 4):
            matrix = list(zip(*matrix[::-1]))
    if  operation[0] == 'U':
        matrix[int(operation[1])-1][int(operation[2])-1] = int(operation[3])
        total_rotate *= 2
        for item in range(total_rotate % 4):
            matrix = list(zip(*matrix[::-1]))
    if  operation[0] == 'Q':
        print (f'element matrix in position {operation[1:]}:')
        print(matrix[int(operation[1])-1][int(operation[2])-1])
    # print check element matrix
    print('Matrix control element printing')
    print(f'Element in {k} row column {l} is', matrix[k-1][l-1])

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