홀수 마방진을 코딩으로 만들기.
마방진은 가로 세로가 같은 숫자로 된 격자에 격자 숫자의 일련 숫자를 한번 씩만 넣어, 가로 세로의 합이 모두 같은 숫자의 배열을 뜻한다. 말을 해놓고 보니 어렵다.
이럴 때는 보기가 필요하다.^^
예를 들어 가로 세로가 각각 3개인 격자에 1~9까지의 숫자를 하나씩 넣어 각 열, 행의 합이 모두 같은 경우의 배열을 "마방진"이라고 한다는 것이다.
1부터 9까지의 합은 45이므로 이를 3으로 나누면 15이다.
따라서 각 열, 행의 합은 모두 15가 되는 숫자의 배열이다.
즉 위와 같이 각 열, 각 행의 값이 같은 경우를 마방진이라고 한다.
이렇게 마방진을 만드는 방법은 몹시 복잡한 공식이 숨어 있는 것 같으나 가로 세로가 홀수로 되어 있는 마방진은 간단히 만들 수 있는 공식이 있다.
일단 그림을 보자.
굵은 숫자로 쓰인 부분이 마방진의 부분이고 나머지 숫자들과 선들은 설명을 위한 부분들이다.
동일한 작업을 5X5 의 마방진으로 다시 한번 테스트해보자
같은 요령으로 진행해본 5X5의 마방진이다.
이 규칙을 간단히 바꾸어 다음 숫자를 좌상단이 아닌 좌하단으로 바꾸는 형식이라면 아래와 같은 표가 나올 것이고 상하가 바뀌기는 하였으나 위와 다름없는 마방진이 만들어질 것이다.
각 줄의 합은 65 임을 보여준다.
만일 시작하는 숫자가 1이 아니라고 해도 아무런 문제가 없다.
위 와 같이 100부터 시작하는 마방진을 만드는 것도 동일한 방법을 사용하면 된다. 각 가로 세로의 합은 560 임을 알 수 있다. 이 합이 맞는 것인지 간단히 계산해 보자.
첫 시간에 배웠던 일련 된 숫자의 합을 만드는 공식으로 100부터 124까지의 합은
223*12+124 = 2800이고
이를 5로 나누면 560이 나온다. 이 마방진은 옳은 마방진인 것이다.
일단 3X3과 5X5에서는 앞서 말한 풀이의 원칙이 잘 지켜졌다. 더 큰 마방진의 경우에도 적용이 되는지는 실험을 통해 확인해 봐야 할 것이다.
지금까지의 이야기를 잘 이해하셨으리라 믿고, 배운 규칙을 기반으로 홀수 마방진을 코딩으로 만들어 보겠다.
이를 통하여 7x7 이나 9x9에서도 이 법칙이 지켜지는 지를 확인해 보자.