python 라틴 마방진 표 형태로 출력하기(제발 도와주세요ㅠㅠㅠㅠ)
조회수 1389회
//v=1
n=int(input("마방진의 행과 열을 무엇으로 할지 입력하시오(3이상 홀수);"))
h=(n+1)/2
k=1
print (k,"(",v,",",h,")")
while k<n*n:
k+=1
if(k%n==1):
h-=1
else:
v-=1
h-=1
if(v<1):
v=n
if(h<1):
h=n
print (k,"(",v,",",h,")")
제가 이렇게 홀수 라틴 마방진을 만드는 프로그램을 작성하였습니다. 그런데 이 프로그램을 실행하면, 마방진이 표 형태로 나오지 않고 숫자(행,열) 식으로 나오게 됩니다. 예를 들어 5차 마방진을 제 프로그램으로 만들게 되면, 우리가 흔히 보는 표 형태로 출력 되지 않고 13(1,1) 7(1,2) 1(1,3) 25(1,4) 19(1,5) 18(2,1)... 식으로 (숫자)(행, 열) 형태로 출력 되네요..... 제가 원하는 표 처럼 출력되게 하는 방법은 없을까요???? 제발 도와주세요ㅠㅠㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
혹시 이런 식의 출력을 원하시나요..?
[5, 1, 9] [8, 4, 3] [2, 7, 6]
v=1 n=int(input("마방진의 행과 열을 무엇으로 할지 입력하시오(3이상 홀수);")) pp = [ [0 for _ in range(n)] for _ in range(n) ] h=(n+1)//2 k=1 ### print (k,"(",v,",",h,")") pp[v-1][h-1] = k while k<n*n: k+=1 if(k%n==1): h-=1 else: v-=1 h-=1 if(v<1): v=n if(h<1): h=n # print (k,"(",v,",",h,")") pp[v-1][h-1] = k for m in range(n) : print(pp[m])
-
(•́ ✖ •̀)
알 수 없는 사용자
- 정말 너무 너무 감사드려요!!! 알 수 없는 사용자 2018.3.25 09:04
- 이것 때문에 끙끙 앓았는데, 정말 좋으신 분 같아요~~ 알 수 없는 사용자 2018.3.25 09:04
- 그리고 정말 죄송한데 (제가 초보라서..) 어떤 원리인지 설명 부탁 가능할까요?? 알 수 없는 사용자 2018.3.25 09:06
- 저도 소스코드를 자세히 본게 아니라 출력형태가 값,좌표 형태라 미리 2차원 리스트를 만들고 v,h를 인덱스로 해서 리스트요소값을 설정한 것 뿐입니다. 알 수 없는 사용자 2018.3.25 14:25
- 혹시 pp = [ [0 for _ in range(n)] for _ in range(n) ] 이 구문이 낯설다면 인터넷에 리스트 컴프리헨션 을 검색하면 자세한 설명이 있습니다. 알 수 없는 사용자 2018.3.25 14:27
-
댓글 입력