Дана действительная квадратная матрица порядка 2n. Получить новую
матрицу, переставляя ее блоки размера п х п по часовой стрелке, начиная с блока
в левом верхнем углу.
Python
Ответы
def rotate_matrix(matrix, p):
# Create a new matrix to hold the rotated elements
rotated_matrix = [[0 for _ in range(len(matrix))] for _ in range(len(matrix))]
# Iterate through the blocks of the matrix
for i in range(0, len(matrix), p):
for j in range(0, len(matrix), p):
# Iterate through the elements of the block
for x in range(p):
for y in range(p):
# Rotate the element and place it in the new matrix
rotated_matrix[j+y][len(matrix)-i-p+x] = matrix[i+x][j+y]
return rotated_matrix
# Test the function
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
print(rotate_matrix(matrix, 2))
# [[3, 4, 11, 12], [2, 8, 10, 16], [1, 7, 15, 14], [5, 6, 9, 13]]