Untitled
unknown
python
10 months ago
1.4 kB
2
Indexable
def getFloor(i, j, lm, lv): return min(min(i, lm - i - 1), min(j, lv - j - 1)) def rotate_layer(matrix, f, r, lm, lv): # Create a list of elements in the current layer layer = [] for j in range(f, lv - f): layer.append(matrix[f][j]) for i in range(f + 1, lm - f): layer.append(matrix[i][lv - f - 1]) for j in range(lv - f - 2, f - 1, -1): layer.append(matrix[lm - f - 1][j]) for i in range(lm - f - 2, f, -1): layer.append(matrix[i][f]) # Rotate the layer by r positions r = r % len(layer) rotated_layer = layer[r:] + layer[:r] # Put the rotated elements back into the matrix idx = 0 for j in range(f, lv - f): matrix[f][j] = rotated_layer[idx] idx += 1 for i in range(f + 1, lm - f): matrix[i][lv - f - 1] = rotated_layer[idx] idx += 1 for j in range(lv - f - 2, f - 1, -1): matrix[lm - f - 1][j] = rotated_layer[idx] idx += 1 for i in range(lm - f - 2, f, -1): matrix[i][f] = rotated_layer[idx] idx += 1 def matrixRotation(matrix, r): lm = len(matrix) lv = len(matrix[0]) for f in range(min(lm, lv) // 2): rotate_layer(matrix, f, r, lm, lv) # Print the rotated matrix for row in matrix: print(" ".join(str(v) for v in row))
Editor is loading...
Leave a Comment