마방진.
2011. 12. 23. 18:28ㆍ머리쓰기/알고리즘
방진 or 마방진?
영어로 Magic Square.
요약
: 1에서 n2까지의 정수를 n행 n열의 정사각형 모양으로 나열하여 가로·세로·대각선의 합이 전부 같아지도록 한 것.
홀수방진
n=3인 경우, 즉 3방진의 경우를 보기로 들면 다음과 같다. ⑴ 맨 윗줄 중앙에 1을 쓴다. ⑵ 오른쪽 위의 대각선 방향으로 2, 3, 4,…를 차례로 쓴다. ⑶ 수를 쓴 자리가 위쪽으로 가버릴 때는 그 수를 쓸 자리의 열의 맨 아래 칸에 쓴다. ⑷ 수를 쓴 자리가 오른쪽으로 나가버릴 때는 그 수를 쓸 행의 왼쪽 끝 칸에 쓴다. ⑸ 오른쪽 위의 칸에 이미 숫자가 들어 있거나 오른쪽 위의 코너에 왔을 때는 그 수의 바로 아래 칸에 쓴다.
짝수방진
짝수방진을 만드는 일반적인 규칙은 없다. 여기서는 4방진을 만드는 방법을 소개한다. ⑴ 먼저와 같이 1~16까지를 차례로 써넣는다. ⑵ 대각선을 그어 대각선 위에 있는 수를 ∥표를 중심으로 하여 서로 점대칭의 위치에 있는 것끼리 바꾸어 놓는다.
[출처 네이버 백과사전]영어로 Magic Square.
요약
: 1에서 n2까지의 정수를 n행 n열의 정사각형 모양으로 나열하여 가로·세로·대각선의 합이 전부 같아지도록 한 것.
홀수방진
n=3인 경우, 즉 3방진의 경우를 보기로 들면 다음과 같다. ⑴ 맨 윗줄 중앙에 1을 쓴다. ⑵ 오른쪽 위의 대각선 방향으로 2, 3, 4,…를 차례로 쓴다. ⑶ 수를 쓴 자리가 위쪽으로 가버릴 때는 그 수를 쓸 자리의 열의 맨 아래 칸에 쓴다. ⑷ 수를 쓴 자리가 오른쪽으로 나가버릴 때는 그 수를 쓸 행의 왼쪽 끝 칸에 쓴다. ⑸ 오른쪽 위의 칸에 이미 숫자가 들어 있거나 오른쪽 위의 코너에 왔을 때는 그 수의 바로 아래 칸에 쓴다.
짝수방진
짝수방진을 만드는 일반적인 규칙은 없다. 여기서는 4방진을 만드는 방법을 소개한다. ⑴ 먼저와 같이 1~16까지를 차례로 써넣는다. ⑵ 대각선을 그어 대각선 위에 있는 수를 ∥표를 중심으로 하여 서로 점대칭의 위치에 있는 것끼리 바꾸어 놓는다.
뿌리깊은 나무에서는 세종(이도)께서 빈 참합을 보고 풀이 법을 제시하였다는데...
알고보면 간단한 마방진 풀이법.
홀수방진.
1. n방진에 +1칸을 추가
2. 가운데부터 순서대로 방향은 상관없이 나열.
3. 칸 이외의 칸에 있는 숫자를 반대쪽으로 넣으면 끝.
or
짝수방진.
1. n방진에 차례대로 나열.
2. 대각선으로 뒤바꾸면 끝.
뿌리깊은 나무라는 드라마를 통해 많은 사람들이 방진과 한글의 위대함에 알게 된 것 같습니다.
마방진 알고리즘.
1. 만들 n방진의 n 입력.
2. if( n%2 ) 짝수 인지 홀수인지 따라 다른 방법
2.1 홀수
(1) n배열의 + 2 크기로 생성
(2) 2n-1 , 즉 1,3,5 ... 순으로 시작지점 달리 나열
(3) 원래 칸 이외의 수 체워넣기.
2.2 짝수
(1) 순서대로 숫자 체우기
(2) 대각선으로 뒤바꾸기
(3) 반대 대각선 뒤바꾸기
(1) n배열의 + 2 크기로 생성
(2) 2n-1 , 즉 1,3,5 ... 순으로 시작지점 달리 나열
(3) 원래 칸 이외의 수 체워넣기.
2.2 짝수
(1) 순서대로 숫자 체우기
(2) 대각선으로 뒤바꾸기
(3) 반대 대각선 뒤바꾸기
3. 끝.
'머리쓰기 > 알고리즘' 카테고리의 다른 글
rand()사용, 그리고 중복되지 않게 뽑기(소스포함) (5) | 2012.02.01 |
---|---|
백트랙킹(Backtracking) vs 욕심쟁이(Greedy) (0) | 2011.08.02 |
알고리즘 종류. (공부해야할 것들.) (0) | 2011.07.28 |
알고리즘. (0) | 2011.06.30 |