programming

python spiral 배열 숫자 넣기 파이썬 나선형 배열 숫자 넣기


by Kitle · 2017. 06. 08.





#input 입력 받을 것
#intput 의 숫자로 n*n배열을 만들어 숫자를 오른쪽 - 아래 - 왼쪽 - 위 순서로 나선형 모양으로 입력을 받는다.
#index의 경계를 넘거나, 다음 입력 위치에 숫자가 있으면 방향을 바꾸고, 최대 숫자인 n*n 배열의 원소수까지 입력하면 종료하는 방법을 이용한다.

input=3
max_val=input*input
mat = []
for x in range(input):
mat.append( [0] * input )

counter = 1
pos_x = 0
pos_y = 0
Direction="right"

while counter <= max_val:
mat[pos_x][pos_y]=counter
counter = counter + 1
if Direction == "right":
if pos_y + 1 == input or mat[pos_x][pos_y+1]>0:
Direction = "down"
pos_x = pos_x + 1
else:
pos_y = pos_y + 1

elif Direction == "down":
if pos_x + 1 == input or mat[pos_x+1][pos_y]>0:
Direction = "left"
pos_y = pos_y - 1
else:
pos_x = pos_x + 1


elif Direction == "left":
if pos_y - 1 < 0 or mat[pos_x][pos_y-1]>0:
Direction = "up"
pos_x = pos_x - 1
else:
pos_y = pos_y - 1

elif Direction == "up":
if pos_x - 1 < 0 or mat[pos_x-1][pos_y]>0:
Direction = "right"
pos_y = pos_y + 1
else:
pos_x = pos_x - 1
print ( mat )