brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Aug 04. 2018

마방진 만들기.1 -코딩수업#11

홀수 마방진을 코딩으로 만들기.

마방진은 가로 세로가 같은 숫자로 된 격자에 격자 숫자의 일련 숫자를 한번 씩만 넣어, 가로 세로의 합이 모두 같은 숫자의 배열을 뜻한다. 말을 해놓고 보니 어렵다.


이럴 때는 보기가 필요하다.^^


예를 들어 가로 세로가 각각 3개인 격자에 1~9까지의 숫자를 하나씩 넣어 각 열, 행의 합이 모두 같은 경우의 배열을 "마방진"이라고 한다는 것이다.


1부터 9까지의 합은 45이므로 이를 3으로 나누면 15이다.

따라서 각 열, 행의 합은 모두 15가 되는 숫자의 배열이다.


즉 위와 같이 각 열, 각 행의 값이 같은 경우를 마방진이라고 한다.

3X3 마방진의 예


이렇게 마방진을 만드는 방법은 몹시 복잡한 공식이 숨어 있는 것 같으나 가로 세로가 홀수로 되어 있는 마방진은 간단히 만들 수 있는 공식이 있다.

일단 그림을 보자.


굵은 숫자로 쓰인 부분이 마방진의 부분이고 나머지 숫자들과 선들은 설명을 위한 부분들이다.


1. 제일 먼저 제일 아래 행의 가운데 열에 1을 넣는다.

2. 앞으로 다음 숫자가 올 때 항상 우측 상단의 칸에 그 숫자를 넣는다. 따라서 2는 가운데 우측 칸에 넣는다.

3. 3은 2의 우측 상단 위치에 가야 하지만 그 위치는 없고 위와 같이 같은 색으로 표시된 좌측 열의 해당 행에 들어간다.

4. 4역 시 우측 상단으로 가야 하지만 해당 장소는 같은 색의 제일 아래에 들어가야 하나 해당 자리에 1이 버티고 있다. 이럴 경우 3이 있던 자리의 아래로 그 위치를 잡는다.(오렌지색 화살표 방향)

5. 5는 우측 상단에 자리가 비어서 해당 자리로 간다.

6. 6은 우측 상단이 없는 곳이므로 해당 자리와 같은 색을 가진 아래 행에 자리를 잡는다.(오렌지색 화살표 방향)

7. 7은 우측 상단의 자리아 같은 색의 자리에 4가 들어 있으므로 6의 아래인 자리 그러니까 상단 우측으로 자리를 잡는다.

8. 8은 우측 상단의 위치와 같은 색인 좌하단에 위치한다.

9. 9는 우측 상단인 가운데 칸에 자리를 잡는다.


동일한 작업을 5X5 의 마방진으로 다시 한번 테스트해보자

같은 요령으로 진행해본 5X5의 마방진이다.

이 규칙을 간단히 바꾸어 다음 숫자를 좌상단이 아닌 좌하단으로 바꾸는 형식이라면 아래와 같은 표가 나올 것이고 상하가 바뀌기는 하였으나 위와 다름없는 마방진이 만들어질 것이다.

각 줄의 합은 65 임을 보여준다.


5X5의 마방진의 예


만일 시작하는 숫자가 1이 아니라고 해도 아무런 문제가 없다.

위 와 같이 100부터 시작하는 마방진을 만드는 것도 동일한 방법을 사용하면 된다. 각 가로 세로의 합은 560 임을 알 수 있다. 이 합이 맞는 것인지 간단히 계산해 보자.

첫 시간에 배웠던 일련 된 숫자의 합을 만드는 공식으로 100부터 124까지의 합은

223*12+124 = 2800이고 

이를 5로 나누면 560이 나온다. 이 마방진은 옳은 마방진인 것이다.


일단 3X3과 5X5에서는 앞서 말한 풀이의 원칙이 잘 지켜졌다. 더 큰 마방진의 경우에도 적용이 되는지는 실험을 통해 확인해 봐야 할 것이다.


지금까지의 이야기를 잘 이해하셨으리라 믿고, 배운 규칙을 기반으로 홀수 마방진을 코딩으로 만들어 보겠다.

이를 통하여 7x7 이나 9x9에서도 이 법칙이 지켜지는 지를 확인해 보자.





매거진의 이전글 데이터 검색 하기 - 코딩수업#10
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari