def get_Matrix(rows, columns):
M = [[0]*columns for _ in range(rows)]
data = 1
for i in range(rows):
for j in range(columns):
M[i][j] = data
data += 1
return M
def revolve_list(L):
x = L.pop(-1)
L.insert(0, x)
return L
def get_list(query, M):
x1, y1, x2, y2 = query
L = []
for j in range(y1-1, y2):
L.append(M[x1-1][j])
for i in range(x1, x2):
L.append(M[i][y2-1])
for j in range(y2-2, y1-1, -1):
L.append(M[x2-1][j])
for i in range(x2-1, x1-1, -1):
L.append(M[i][y1-1])
return L
def set_list(query, M, L):
x1, y1, x2, y2 = query
idx = 0
for j in range(y1-1, y2):
M[x1-1][j] = L[idx]
idx += 1
for i in range(x1, x2):
M[i][y2-1] = L[idx]
idx += 1
for j in range(y2-2, y1-1, -1):
M[x2-1][j] = L[idx]
idx += 1
for i in range(x2-1, x1-1, -1):
M[i][y1-1] = L[idx]
idx += 1
def show_matrix(M):
rows = len(M)
cols = len(M[0])
for i in range(rows):
for j in range(cols):
print(M[i][j], end=' ')
print()
def solution(rows, columns, queries):
answer = []
M = get_Matrix(rows, columns)
for query in queries:
L = get_list(query, M)
L = revolve_list(L)
set_list(query, M, L)
answer.append(min(L))
return answer