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.
# create matrix and enter data
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())))
# matrix operations block
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])
Comments
Leave a comment