파이썬 달팽이배열 관련 질문합니다
조회수 1149회
n=4
m=3
k = {}
a=1
b=0
c=0
while c< m*n:
for i in range(abs(m)):
b=b+1
c=c+1
k[(a,b)] = c
if c==m*n:
break
for i in range(abs(n-1)):
a=a+1
c=c+1
k[(a,b)] = c
if c==m*n:
break
for i in range(abs(m-1)):
b=b-1
c=c+1
k[(a,b)] = c
if c==m*n:
break
for i in range(abs(n-2)):
a= a-1
c=c+1
k[(a,b)] = c
if c==m*n:
break
print(k)
이것을 출력하면
{(1, 1): 1, (1, 2): 2, (1, 3): 3, (2, 3): 12, (3, 3): 13, (4, 3): 14, (4, 2): 7, (4, 1): 18, (3, 1): 19, (2, 1): 10, (2, 2): 11, (5, 3): 15, (5, 2): 16, (5, 1): 17}
이렇게 나오는데 (2,3): 12
로나옵니다
(2,3): 4
가 원래 맞지않나요?
왜이렇게나온건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
달팽이 배열 숙제인 것 같네요.
답은 아니고, 그냥 중간중간 상태를 찍어볼 수 있는 함수를 하나 만들어 봤어요. 이 함수 가지고 확인하면서, 원래 코드 수정해서 정답을 만들어 보세요.
def print_k(): print('-'*15) for i in range(1, 6): for j in range(1, 6): print('%4s'%(k.get((i,j), '')), end='') print() n=4 m=3 k = {} a=1 b=0 c=0 while c< m*n: for i in range(abs(m)): b=b+1 c=c+1 k[(a,b)] = c if c==m*n: break print_k() for i in range(abs(n-1)): a=a+1 c=c+1 k[(a,b)] = c if c==m*n: break print_k() for i in range(abs(m-1)): b=b-1 c=c+1 k[(a,b)] = c if c==m*n: break print_k() for i in range(abs(n-2)): a=a-1 c=c+1 k[(a,b)] = c if c==m*n: break print_k() #print(k) print_k()
--------------- 1 2 3 --------------- 1 2 3 4 5 6 --------------- 1 2 3 4 5 8 7 6 --------------- 1 2 3 10 4 9 5 8 7 6 --------------- 1 2 3 10 11 12 9 5 8 7 6 --------------- 1 2 3 10 11 12 9 13 8 7 14 15 --------------- 1 2 3 10 11 12 9 13 8 7 14 17 16 15 --------------- 1 2 3 10 11 12 19 13 18 7 14 17 16 15 --------------- 1 2 3 10 11 12 19 13 18 7 14 17 16 15
댓글 입력