You cannot see this page without javascript.

Magic Square (마방진) - 4의 배수

Programing 조회 수 2450 추천 수 0 2016.07.15 09:11:21

마방진이라는 것에 대하여 적어볼려고 한다.

마방진의 역사, 발생원인 등등 뭔가 대단한 것들이 검색하니까 쏟아져 나오던데,

그런 것들에 대하여 뭔가 사고해보고 싶은것은 아니다.

다만 퍼즐 같은 느낌의 마방진을 항상 풀 수 있는 어떤 해법은 없을까 생각해보고 싶었다.

약간의 시간을 두고 생각해보니 답은 있었고 답까지 진행했던 나의 생각들을 정리하고 싶어서 여기에 끄적여 본다.

검색을 통하여 엄청나게 많은 해법들을 볼수 있다.

내가 제시하는 방법도 그중에 한가지일 뿐이라 생각한다.

자료들을 보니 다들 홀수와 짝수로 나누어 해법을 하고 있고,

또한 그중 짝수를 4의 배수와 그외의 것으로 나누어 해법을 하고 있었다.

나또한 해법 그룹을 그렇게 나누어 생각하였고 오늘은 그중 4배수에 대한 해법을 알아보려 한다.

또한 이 방법을 php로 표현하여 웹상에서 마방진이 자동 생성되도록 프로그래밍도 해보았는데 뒤에 소스도 공개하도록 할 예정이다.

 

4배수 풀이방법

1. 전채를 비율로 패턴분할하여 계산하는 방법

아래 표는 4차 마방진의 완성모습이다.

1

15

14

4

12

6

7

9

8

10

11

5

13

3

2

16

완성모습으로 변화하는 과정을 보자.

다음 표를 보면 색갈을 통하여 두구역으로 나누어 놨다.

1

15

14

4

12

6

7

9

8

10

11

5

13

3

2

16

노란색칸에는 숫자가 순서대로 진행이 되고, 흰색칸에는 숫자가 거꾸로 진행됨을 알수 있다.

놀랍게도 이렇게 순서만 바꾸었을 뿐인데 가로,세로,대각선의 합이 일치한다.

첫번째 방법은 이런패턴으로 모든 4배수 마방진을 완성하는 것이다.

확인을 위하여 다음으로 8차 마방진을 보자.

<

1 2 62 61 60 59 7 8
9 10 54 53 52 51 15 16
48 47 19 20 21 22 42 41
40 39 27 28 29 30 34 33
32 31 35 36 37 38 26 25
24 23 43 44 45 46 18 17
49 50 14 13 12 11 55 56
57 58 6 5 4 3 63 64

표에서 보는것과 같이 같은 패턴으로 크기만 확장된 모습이다.

이정도 참조하면 12차나 16차도 어떤모습인지 예측이 될거라 생각한다.

 

2. 단위패턴으로 증가하여 계산하는 방법

4차 마방진은 위에서 알아보았던 방법과 동일하다.

다만 8차나 16차로 올라감에 따라 패턴의 크기가 증가하는 것이 아니라 기본패턴 자체가 증가되는 방식이다.

말로는 설명이 어려우니 바로 8차 마방진의 패턴을 보도록하자.

1 63 62 4 5 59 58 8
56 10 11 53 52 14 15 49
48 18 19 45

44

22 23 41
25 39 38 28 29 35 34 32
33 31 30 36 37 27 26 40
24 42 43 21 20 46 47 17
16 50 51 13 12 54 55 9
57 7 6 60 61 3 2 64

위 표와 같이 기본 4x4 패턴이 증가하여 전채로 형성된다.

정리해 보자면 두방법 모두 어떤 시작지점에서 진행함에 있어 패턴확장이든 패턴증가든 한패턴에서 진행함에 있어 다른패턴은 반대로 진행하면 된다.

다시 말해서 시작을 왼쪽위에서 하든, 왼쪽 밑에서 하든, 가로로 하든, 새로로 하든 패펀분리만 시킨후 다른패턴을 역으로 기록한다.

다음은 오른쪽위에서 가로로 진행하며 기본패턴증가방식으로 형성한 12차 마방진의 완성모습이다.

12

134

135

9

8

138

139

5

4

142

143

1

121

23

22

124

125

19

18

128

129

15

14

132

109

35

34

112

113

31

30

116

117

27

26

120

48

98

99

45

44

102

103

41

40

106

107

37

60

86

87

57

56

90

91

53

52

94

95

49

73

71

70

76

77

67

66

80

81

63

62

84

61

83

82

64

65

79

78

68

69

75

74

72

96

50

51

93

92

54

55

89

88

58

59

85

108

38

39

105

104

42

43

101

100

46

47

97

25

119

118

28

29

115

114

32

33

111

110

36

13

131

130

16

17

127

126

20

21

123

122

24

144

2

3

141

140

6

7

137

136

10

11

133

 

 

최종적으로 마지막에 했던 방식대로 php를 이용하여 구현해본 코드는 다음과 같다.

 

$k = 1 ;
for ( $i=0 ; $i < $square ; $i++ )
{
 for ( $j=($square-1) ; $j >= 0 ; $j-- )
 {
  if ((($i%4 == 1) or ($i%4 == 2)) xor (($j%4 == 1) or ($j%4 == 2)))
  {
   $sq[$i][$j] = $square*$square-$k+1 ;
  }
  else
  {
   $sq[$i][$j] = $k ;
  }
  $k++ ;
 }

여기서 $square는 차수를 의미하며, $i와 $j는 행열을 의미한다.

 

태그
엮인글 :
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
369 Windows7 OEM을 활용하여 클린설치 file [11] LynX 2010-11-06 765
368 Windows7 에서 시스템을 백업/복원하는 가장 쉬운 방법!! file LynX 2010-11-07 334
367 탐색기 메뉴에 '명령 프롬프트 열기'와 '메모장으로 열기' 추가하기 file [14] LynX 2010-11-08 591
366 인터넷 익스플로러 리플레쉬 file LynX 2011-05-02 286
365 활성 네트워크 중복으로 인한 인터넷 연결 안되는 문제 file [12] LynX 2011-05-26 971
364 32bit Driver을 64bi로 설치하기 [8] LynX 2011-06-21 325
363 설치파일(inf)에 대한 이해 [7] LynX 2011-06-22 603
362 inf 설치시 경고창 안뜨게 하기 file [10] LynX 2011-06-22 430
361 로우 포맷(Low level format, 저수준 포맷) 하기 file [11] LynX 2011-07-06 722
360 Win XP Crack file [8] LynX 2011-10-31 269
359 윈도우7 메모리 인식 문재 file [13] LynX 2011-11-30 530
358 RoundCube 첨부 용량 변경 / 한글 수정 [10] LynX 2012-01-31 836
357 윈도우7 알수없는장치 file [8] LynX 2012-03-13 273
356 디지털 서명 file [1] LynX 2012-03-15 445
355 아레한글 사용시 출력물에 음영이 나타나는 현상. file [11] LynX 2012-03-29 1155
354 Xyview DVR서버 연결 [8] LynX 2012-04-19 295
353 HP Officejet 6500A (Plus) 호환 드라이버 [8] LynX 2012-05-16 294
352 IIS에 FastCgi모듈 활성화 시키기 file [12] LynX 2012-11-21 1283
351 윈도우 2008서버에 XE 설치 절차 [9] LynX 2012-11-22 230
350 Windows Server 2012 설치 file LynX 2012-11-23 477

XE Login