마방진은 가로, 세로, 대각선 어느 방향으로 합계를 계산해도 같은 값이 나오는 숫자의 배열이다.
마방진에는 다음과 같은 규칙이 있다.
1. 홀수 행렬에서만 가능하다.
2. 최초의 '1'이 채워지는 자리는 첫 줄 정 가운데 열이다.
3. 직전에 채워진 숫자가 행렬의 차수(n)의 배수면 다음 숫자는 아래 방향만 채운다.
4. 직전에 채워진 숫자가 행렬의 차수(n)의 배수가 아니면 다음 숫자는 오른쪽 위 방향에 채운다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
print ("Hello, world!")
n = int(input('1이 아닌 홀수를 입력하시오 : '))
if n % 2 == 0:
print('다시 입력하시오 : ')
input('1이 아닌 홀수를 입력하시오 : ')
data = [[0] * n for i in range(n)]
i = 0; j = int(n/2)
for k in range(1, n **2 + 1):
data[i][j] = k
if k % n == 0:
i += 1
else:
i -= 1
i = n-1 if i < 0 else i
j += 1
j = 0 if j == n else j
for i in range(len(data)):
for i in range(len(data[0])):
print('3%d ' % data[i][j], end = '')
print()
|
cs |
'python' 카테고리의 다른 글
python/파이썬/웹크롤링/웹크롤러/crawling (0) | 2019.12.31 |
---|---|
python/파이썬/class/ (0) | 2019.12.30 |
python/파이썬/지그재그정렬 (0) | 2019.12.27 |
파이썬/python/달팽이 배열 (1) | 2019.12.27 |
파이썬/python/주민등록번호검증문제 (0) | 2019.12.26 |