728x90
반응형
SMALL
import copy
from collections import deque
array = [[1, 2, 3],[7, 2, 5]]
def tmpGraph(x,y,value):
tmpMap = [[value for i in range(x)] for j in range(y)]
return tmpMap
def mapPad(graph, east, west, south, north, value):
graph = deque(map(deque , graph))
tmpGraphXLen = len(graph[0])
for _ in range(south):
graph.append([value for _ in range(tmpGraphXLen + east + west)]) # 밑 padding
for _ in range(north):
graph.appendleft([value for _ in range(tmpGraphXLen + east + west)]) #윗 padding
tmpGraphYLen = len(graph)
for _ in range(north,tmpGraphYLen-south): #왼쪽 padding
for j in range(east):
graph[_] = deque(graph[_])
graph[_].appendleft(value)
graph[_] = list(graph[_])
for _ in range(north, tmpGraphYLen - south): # 오른쪽 padding
for j2 in range(west):
graph[_] = deque(graph[_])
graph[_].append(value)
graph[_] = list(graph[_])
return list(graph)
def rotate(graph, count, direction):
N = len(graph)
M = len(graph[0])
if not direction:
count += 2
if count%2 == 1:
ret = [[0] * N for _ in range(M)]
else:
ret = [[0] * M for _ in range(N)]
if count%4 == 1:
for r in range(N):
for c in range(M):
ret[c][N - 1 - r] = graph[r][c]
return ret
elif count%4 == 2:
for r in range(N):
for c in range(M):
ret[N - 1 - r][(M-1) - c] = graph[r][c]
return ret
elif count%4 == 3:
for r in range(N):
for c in range(M):
ret[M- 1 -c][r] = graph[r][c]
return ret
else:
return graph
return graph
def graphInvert(graph,leftRight, upDown):
N = len(graph)
M = len(graph[0])
ret = [[0] * M for _ in range(N)]
if upDown: #상하반전
for r in range(N):
for c in range(M):
ret[r][c] = graph[N-r-1][c]
else:
ret = graph
graph = copy.deepcopy(ret)
N = len(graph)
M = len(graph[0])
if leftRight: #좌우반전
for r2 in range(N):
for c2 in range(M):
ret[r2][c2] = graph[r2][M-c2-1]
return ret
728x90
반응형
LIST