프로그래밍[Univ]/C언어

짝수 마방진(4의 배수가 아닌 짝수)

Cloud Travel 2011. 12. 30. 16:53
4의 배수가 아닌 짝수의 마방진을 만드는 것은 하나의 예를 들어가면서 설명하도록 하겠다...

14차 마방진(14*14)를 예를 들어 설명하겠다.

ⓐ 4의 배수가 아닌 짝수의 마방진을 만들대는 일단 size/2차 마방진을 만듭니다.
  > 14차 마방진을 만들고 싶다면, 이전에 7차 마방진을 만듭니다.
     

 > 이 7차 마방진은 차후에 사용할 것이니 임시로 저장을 해둔다.

ⓑ 4의 배수가 아닌 짝수의 마방진을 만들기 위해서는 다음과 같은4개의 공간으로 구분하여 만들 필요가 있다.

    


 - 일단 마방진을 4부분으로 쪼갭니다.
 - 0~3의 숫자가 들어가는데 이것을 넣는 규칙은 다음과 같습니다.
  > 왼쪽 위의 마방진은 ceil(size/4)개의 3을 왼쪽부터 써넣습니다. 그외는 0으로 채웁니다.
     (단, ceil(size/4)+1번의 행(쪼갠 마방진의 중간행)에는 처음에 0을 넣고선 3을 써넣습니다.) 

  > 왼쪽 아래의 마방진은 왼쪽 위의 마방진과 반대로 작성을 해줍니다.(0과 3을 반대로 넣는다는 것!!)
  > 오른쪽 위의 마방진은 ceil(size/4-1)개의 1을 오른쪽부터 써놓고, 1이아닌 곳에는 2를 채웁니다.
  > 오른쪽 아래의 마방진은 오른쪽위의 마방진과 반대로 채웁니다.(1과 2를 반대로 넣는다는 것!!)

ⓒ 그 다음에 전체적으로 size*size/4를 곱합니다.(14차에서는 14*14/4 = 49를 곱한다)
     


ⓓ ⓐ단계에서 만든 size/2차 마방진을 각각의 구분된 4개의 격자에 각각을 더하면 마방진이 완성됩니다.