МАГИЧЕСКИЕ КВАДРАТЫ ДЕВЯТОГО ПОРЯДКА

 

Внимание! Оригинал.

При копировании прошу указывать

ссылку на данную страницу.

 

 

Уважаемые читатели! Рада, что вы зашли на эту страницу. Значит, вам ещё не надоели мои рассказы о магических квадратах. Надеюсь, что вы прочли все предыдущие страницы на эту тему. Если нет, то прочтите обязательно! Это поможет вам лучше понять материал данной страницы.

 

Продолжаю рассказ. О квадратах девятого порядка расскажу совсем кратко.

Магическая константа квадрата девятого порядка равна 369.

Сразу замечу, что магический квадрат девятого порядка может быть построен методом террас (см. «Методы построения магических квадратов»). Этот квадрат вы видите на рис. 1. Он ассоциативен, как любой магический квадрат, построенный методом террас.

 

 

5

46

15

56

25

66

35

76

45

54

14

55

24

65

34

75

44

4

13

63

23

64

33

74

43

3

53

62

22

72

32

73

42

2

52

12

21

71

31

81

41

1

51

11

61

70

30

80

40

9

50

10

60

20

29

79

39

8

49

18

59

19

69

78

38

7

48

17

58

27

68

28

37

6

47

16

57

26

67

36

77

 

                                                    Рис. 1

 

В квадрате показан чётно-нечётный рисунок, как и в следующем ассоциативном квадрате (рис. 2). Этот квадрат построил Георгий Александров своим методом. К сожалению, квадрат не является пандиагональным, как квадраты пятого и седьмого порядка, построенные тем же методом. Ссылка на страницу Александрова:

 

http://renuar911.narod.ru/ideal_mk.html

 

 

13

63

23

64

33

74

43

3

53

78

38

7

48

17

58

27

68

28

62

22

72

32

73

42

2

52

12

37

6

47

16

57

26

67

36

77

21

71

31

81

41

1

51

11

61

5

46

15

56

25

66

35

76

45

70

30

80

40

9

50

10

60

20

54

14

55

24

65

34

75

44

4

29

79

39

8

49

18

59

19

69

 

                                                                      Рис. 2

 

Примечание: Георгий убрал квадрат девятого порядка с указанной страницы, потому что он не получился пандиагональным, а только ассоциативным. Я скопировала квадрат, когда он ещё был на странице.

 

К магическим квадратам девятого порядка применимы основные преобразования. Каждый квадрата в результате этих преобразований порождает группу из восьми квадратов, считая исходный.

К ассоциативным квадратам, кроме того, можно применить перестановки строк и/или столбцов, которые возможны благодаря ассоциативности.

 

Перехожу к пандиагональным квадратам девятого порядка. У таких квадратов 2 главные и 16 разломанных диагоналей, сумма по ним тоже равна магической константе квадрата.

Метод построения пандиагонального квадрата девятого порядка мне не известен. У меня есть три образца таких квадратов, которые Георгий нашёл в Интернете и прислал мне (поиски в Интернете в нашем сотрудничестве с Георгием выполняет Георгий, потому что у него неограниченный Интернет, а у меня по интернет-карте с поминутной оплатой). Покажу эти образцы. Первый найден по ссылке:

 

http://www.grogono.com/magic/9x9.php

 

Он примечателен тем, что заполнен числами от 0 до 80, то есть не традиционным образом. Я, конечно, привела его к привычному виду, то есть прибавила ко всем числам матрицы единицу (рис. 3).

 

 

9

34

62

12

37

65

24

49

77

15

40

68

27

52

80

3

28

56

21

46

74

6

31

59

18

43

71

35

63

7

38

66

10

50

78

22

41

69

13

53

81

25

29

57

1

47

75

19

32

60

4

44

72

16

61

8

36

64

11

39

76

23

51

67

14

42

79

26

54

55

2

30

73

20

48

58

5

33

70

17

45

 

                                                                      Рис. 3

 

Следующие два квадрата (рис. 4 и рис. 5) найдены по ссылке:

 

http://www.dailysudoku.com/sudoku/forums/viewtopic.php?p=434&sid=7471070d66eebdf949ca62292c36c9b3

 

 

1

42

76

9

38

75

5

43

80

50

61

17

46

60

13

54

56

12

36

65

21

32

70

26

28

69

22

73

6

40

81

2

39

77

7

44

14

52

62

10

51

58

18

47

57

27

29

66

23

34

71

19

33

67

37

78

4

45

74

3

41

79

8

59

16

53

55

15

49

63

11

48

72

20

30

68

25

35

64

24

31

 

                                                                       Рис. 4

 

37

47

79

60

67

12

26

9

32

3

35

45

50

73

56

70

15

22

11

25

6

31

39

53

81

59

64

62

72

14

19

2

34

42

49

75

52

78

58

66

17

27

5

28

38

36

41

46

74

61

69

13

21

8

24

4

30

44

54

77

55

65

16

68

10

20

7

33

40

48

80

63

76

57

71

18

23

1

29

43

51

 

                                                                      Рис. 5

 

Вот на этих трёх квадратах покажу некоторые преобразования. Ну, как уже знает читатель, ко всем пандиагональным квадратам применимы преобразования параллельного переноса на торе. Пандиагональный квадрат девятого порядка порождает в результате этих преобразований группу из 81 квадрата, считая исходный.

К пандиагональным квадратам  девятого порядка также применимо преобразование стандартной перестановки строк и/или столбцов, или преобразование “диагонали-диагонали”, как я его назвала. Покажу на примере перестановки столбцов (рис. 6) и одновременно перестановки строк и столбцов (рис. 7). В качестве исходного беру квадрат с рис. 3.

 

 

9

34

62

12

37

65

24

49

77

 

9

77

49

24

65

37

12

62

34

15

40

68

27

52

80

3

28

56

 

15

56

28

3

80

52

27

68

40

21

46

74

6

31

59

18

43

71

 

21

71

43

18

59

31

6

74

46

35

63

7

38

66

10

50

78

22

 

35

22

78

50

10

66

38

7

63

41

69

13

53

81

25

29

57

1

->

41

1

57

29

25

81

53

13

69

47

75

19

32

60

4

44

72

16

 

47

16

72

44

4

60

32

19

75

61

8

36

64

11

39

76

23

51

 

61

51

23

76

39

11

64

36

8

67

14

42

79

26

54

55

2

30

 

67

30

2

55

54

26

79

42

14

73

20

48

58

5

33

70

17

45

 

73

45

17

70

33

5

58

48

20

 

                                                                      Рис. 6

 

 

9

34

62

12

37

65

24

49

77

 

9

77

49

24

65

37

12

62

34

15

40

68

27

52

80

3

28

56

 

73

45

17

70

33

5

58

48

20

21

46

74

6

31

59

18

43

71

 

67

30

2

55

54

26

79

42

14

35

63

7

38

66

10

50

78

22

 

61

51

23

76

39

11

64

36

8

41

69

13

53

81

25

29

57

1

->

47

16

72

44

4

60

32

19

75

47

75

19

32

60

4

44

72

16

 

41

1

57

29

25

81

53

13

69

61

8

36

64

11

39

76

23

51

 

35

22

78

50

10

66

38

7

63

67

14

42

79

26

54

55

2

30

 

21

71

43

18

59

31

6

74

46

73

20

48

58

5

33

70

17

45

 

15

56

28

3

80

52

27

68

40

 

                                                                      Рис. 7

 

На рисунках выделены цветом две пары связанных диагоналей (в каждом преобразовании). Проследите за остальными 16 диагоналями. Я не показала перестановку только строк, она совершенно аналогична перестановке столбцов.

 

Ну, а теперь моё любимое преобразование – “строки-диагонали”. Как я уже говорила в статье о пандиагональных квадратах седьмого порядка, матрица преобразования сейчас была построена сразу, учитывая аналогию с матрицами для квадратов пятого и седьмого порядка.

Пусть матрица исходного квадрата А имеет стандартный вид аij. Тогда матрица квадрата, полученного преобразованием “строки-диагонали”, имеет следующий вид (рис. 8):

 

 

а11

а56

а92

а47

а83

а38

а74

а29

а65

а66

а12

а57

а93

а48

а84

а39

а75

а21

а22

а67

а13

а58

а94

а49

а85

а31

а76

а77

а23

а68

а14

а59

а95

а41

а86

а32

а33

а78

а24

а69

а15

а51

а96

а42

а87

а88

а34

а79

а25

а61

а16

а52

а97

а43

а44

а89

а35

а71

а26

а62

а17

а53

а98

а99

а45

а81

а36

а72

а27

а63

а18

а54

а55

а91

а46

а82

а37

а73

а28

а64

а19

 

                                                                  Рис. 8

 

На рис. 9 вы видите это преобразование, применённое к квадрату с рис. 4. Разными цветами выделены строки исходного квадрата, переходящие в диагонали нового квадрата, главную и 8 разломанных. Столбцы исходного квадрата тоже переходят в диагонали – вторую главную и другие 8 разломанных.

 

 

1

42

76

9

38

75

5

43

80

 

1

58

20

77

53

69

45

12

34

50

61

17

46

60

13

54

56

12

 

71

42

18

30

7

55

22

74

50

36

65

21

32

70

26

28

69

22

 

61

19

76

47

68

44

15

36

3

73

6

40

81

2

39

77

7

44

 

41

17

33

9

57

25

73

49

65

14

52

62

10

51

58

18

47

57

->

21

79

46

67

38

14

35

6

63

27

29

66

23

34

71

19

33

67

 

11

32

8

60

27

75

52

64

40

37

78

4

45

74

3

41

79

8

 

81

48

70

37

13

29

5

62

24

59

16

53

55

15

49

63

11

48

 

31

2

59

26

78

54

66

43

10

72

20

30

68

25

35

64

24

31

 

51

72

39

16

28

4

56

23

80

 

                                                                      Рис. 9

 

Теперь уже каждый читатель может без труда составить матрицу преобразования ‘’строки-диагонали” для пандиагонального квадрата любого нечётного порядка.

 

Далее рассмотрю преобразование сложной и одновременной перестановки строк и столбцов, которое эквивалентно двукратному применению преобразования “строки-диагонали”. Я не буду подробно описывать процесс перестановки строк и столбцов, как делала это для квадратов пятого и седьмого порядка, а сразу приведу матрицу преобразования и покажу его на конкретном квадрате. Как всегда матрица исходного квадрата имеет стандартный вид аij. Тогда матрица преобразования одновременной перестановки строк и столбцов имеет следующий вид (рис. 10):

 

 

а11

а16

а12

а17

а13

а18

а14

а19

а15

а51

а56

а52

а57

а53

а58

а54

а59

а55

а91

а96

а92

а97

а93

а98

а94

а99

а95

а41

а46

а42

а47

а43

а48

а44

а49

а45

а81

а86

а82

а87

а83

а88

а84

а89

а85

а31

а36

а32

а37

а33

а38

а34

а39

а35

а71

а76

а72

а77

а73

а78

а74

а79

а75

а21

а26

а22

а27

а23

а28

а24

а29

а25

а61

а66

а62

а67

а63

а68

а64

а69

а65

 

                                                                      Рис. 10

 

На рис. 11 показано применение этого преобразования к квадрату с рис. 5. Преобразование это, так же как стандартную перестановку строк и/или столбцов, я называю “диагонали-диагонали”, так как оно не изменяет наборы чисел в строках и столбцах, а переводит 18 диагоналей исходного квадрата (2 главные и 16 разломанных) в 18 диагоналей нового квадрата. На рис. 11 выделены три пары связанных диагоналей.

 

 

37

47

79

60

67

12

26

9

32

 

37

12

47

26

79

9

60

32

67

3

35

45

50

73

56

70

15

22

 

52

27

78

5

58

28

66

38

17

11

25

6

31

39

53

81

59

64

 

76

1

57

29

71

43

18

51

23

62

72

14

19

2

34

42

49

75

 

62

34

72

42

14

49

19

75

2

52

78

58

66

17

27

5

28

38

->

68

40

10

48

20

80

7

63

33

36

41

46

74

61

69

13

21

8

 

11

53

25

81

6

59

31

64

39

24

4

30

44

54

77

55

65

16

 

24

77

4

55

30

65

44

16

54

68

10

20

7

33

40

48

80

63

 

3

56

35

70

45

15

50

22

73

76

57

71

18

23

1

29

43

51

 

36

69

41

13

46

21

74

8

61

 

                                                                     Рис. 11

 

Ну, осталось сочинить и применить к какому-нибудь пандиагональному квадрату из трёх имеющихся (или к какому-либо варианту этих квадратов) преобразование “плюс-минус …”.

Кстати, я, кажется, ещё нигде не сказала, что преобразования “плюс-минус …” в принципе можно применять не только к пандиагональному квадрату, но и просто к магическому, потому что суммы в строках, столбцах и главных диагоналях при таких преобразованиях не изменяются. Но я не пробовала это делать, а начала применять такие преобразования только к пандиагональным квадратам пятого порядка, при исследовании которых и обнаружила преобразования такого типа.

 Есть даже преобразования “плюс-минус …”, которые сохраняют и пандиагональность, и ассоциативность. Я говорила о таких преобразованиях и приводила примеры их применения в статье “Пандиагональные квадраты пятого порядка” и в статье ”Ассоциативные магические квадраты”.

 

Вот сейчас попробовала сочинить преобразование “плюс-минус …” по аналогии с квадратами пятого и седьмого порядка. И удивительное дело: преобразование получается такое, которое сохраняет ассоциативность, но не сохраняет пандиагональность! Но зато, в подтверждение сказанного выше, я применила это преобразование к квадрату с рис. 2 (ассоциативному, но не пандиагональному). Сначала покажу матрицу преобразования (рис. 12):

 

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

-2

 

 

 

 

 

 

 

+2

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

 

 

 

 

 

 

 

 

+2

-2

 

                                                   Рис. 12

 

Это преобразование совершенно аналогично по структуре подобному преобразованию для пандиагональных квадратов пятого и седьмого порядка. Однако здесь пандиагональность не сохраняется! В шести разломанных диагоналях суммы изменяются. Если же написать аналогичную матрицу для квадрата одиннадцатого порядка, то опять пандиагональность сохраняется.

На рис. 13 вы видите применение этого преобразования к ассоциативному квадрату с рис. 2. В результате преобразования получился квадрат, который тоже является ассоциативным.

 

 

13

63

23

64

33

74

43

3

53

 

15

61

23

64

33

74

43

3

53

78

38

7

48

17

58

27

68

28

 

78

38

9

46

17

58

27

68

28

62

22

72

32

73

42

2

52

12

 

62

22

72

32

75

40

2

52

12

37

6

47

16

57

26

67

36

77

 

37

6

47

16

57

26

69

34

77

21

71

31

81

41

1

51

11

61

->

19

71

31

81

41

1

51

11

63

5

46

15

56

25

66

35

76

45

 

5

48

13

56

25

66

35

76

45

70

30

80

40

9

50

10

60

20

 

70

30

80

42

7

50

10

60

20

54

14

55

24

65

34

75

44

4

 

54

14

55

24

65

36

73

44

4

29

79

39

8

49

18

59

19

69

 

29

79

39

8

49

18

59

21

67

 

                                                                  Рис. 13

 

Сочинить матрицу преобразования “плюс-минус …” для пандиагональных квадратов девятого порядка, чтобы оно сохраняло пандиагональность, мне пока не удалось. Не могу даже сказать, существует ли такое преобразование.

 

На этом пока заканчиваю свой рассказ. Возможно, продолжу.

 

                                               ***

 

21 сентября 2007 г.

 

Продолжаю свой рассказ. Вчера подумала о том, что неплохо было бы привести несколько образцов просто магических квадратов девятого порядка (то есть не являющихся ни пандиагональными, ни ассоциативными). Ведь методом террас строится всего один квадрат (который является и ассоциативным). Этот квадрат изображён на рис. 1. А если кто-то захочет посмотреть на другие магические квадраты девятого порядка, то где их взять, как их построить?

В моей книге “Компьютер решает головоломки”, которую я писала 14 лет назад, было уделено много внимания построению магических квадратов с помощью компьютера. Было составлено много разных программ для такого построения. Вот одну из этих программ я и применила для построения магических квадратов девятого порядка. В книге эта программа была составлена для построения квадратов шестого порядка. Но немного её подкорректировав, я построила квадраты девятого порядка. Точно также данную программу можно приспособить для построения магических квадратов любого порядка. Эта программа примечательна своим оригинальным алгоритмом. Сначала предисловие к этому алгоритму. Когда я составляла программы для построения магических квадратов третьего и четвёртого порядка, то действовала, как говорится, в лоб: организовала циклы по всем переменным и заполнила таким образом квадраты. Так я составила, например, программу для построения всех 880 магических квадратов четвёртого порядка.

Однако, уже начиная с квадратов пятого порядка такой алгоритм никуда не годится! Потому что количество перебираемых в циклах вариантов становится очень большим, и программа будет выполняться очень долго. Тогда я начала думать над другим алгоритмом для построения магических квадратов. Этот алгоритм я придумала и реализовала его для квадратов шестого порядка (всё это в указанной книге изложено). Новый алгоритм использует генератор случайных чисел - ГСЧ. С помощью функции случайных чисел я сначала делаю расклад по строкам, так чтобы в строках суммы чисел были равны магической константе. Этот этап программа выполняет практически мгновенно. На втором этапе числа в строках переставляются так, чтобы сделать нужные наборы чисел в столбцах (то есть получить во всех столбцах магическую сумму). Этот этап не при любых раскладах по строкам выполним. Если не получается, программы генерирует другой расклад по строкам. Второй этап тоже выполняется практически мгновенно. Наконец, осталось получить нужные наборы чисел в диагоналях квадрата. Это третий этап. Теперь готовые строки меняются местами до тех пор, пока в диагоналях не получатся нужные наборы чисел. Этот этап тоже не всегда выполним. Тогда программа снова возвращается на первый этап – делает другой расклад по строкам. Если третий этап выполним, то длительность его 1-3 минуты (для квадратов девятого порядка), результатом является готовый магический квадрат. Вот такой оригинальный алгоритм. Ценность алгоритма в том, что он годится для построения магического квадрата любого порядка! У меня есть уже тексты программ для квадратов пятого, шестого, седьмого и девятого порядка. Кстати, этой же программой я пользовалась для построения магических квадратов седьмого порядка (см. “Магические квадраты седьмого порядка”) с той только разницей, что там я не генерировала расклад по строкам, а задала его сама, то есть во всех построенных квадратах наборы чисел в строках одинаковы.

 

Теперь приведу текст программы для построения магических квадратов девятого порядка.

 

ТЕКСТ ПРОГРАММЫ

 

10 DIM A(9, 9), B(81), C(9, 9), D(8)

12 OPEN "mk.txt" FOR OUTPUT AS #1

15 RANDOMIZE TIMER

20 PRINT "NACHALO 1 ETAPA": PRINT

25 FOR I = 1 TO 81: B(I) = I: NEXT I

30 I = 1: W = 81: GOSUB 1000

50 I = 2: W = 72: GOSUB 1000

70 I = 3: W = 63: GOSUB 1000

90 I = 4: W = 54: GOSUB 1000

110 I = 5: W = 45: GOSUB 1000

112 I = 6: W = 36: GOSUB 1000

114 I = 7: W = 27: GOSUB 1000

116 I = 8: W = 18: GOSUB 1000

130 FOR M = 1 TO 9: A(9, M) = B(M): NEXT M

140 PRINT "RASKLAD PO STROKAM GOTOV!": PRINT

160 GOTO 3500

1000 FOR J = 1 TO 8

1020 K = INT(RND * W + 1): A(I, J) = B(K)

1030 NEXT J

1040 A(I, 9) = 369 - A(I, 1) - A(I, 2) - A(I, 3) - A(I, 4) - A(I, 5) - A(I, 6) - A(I, 7) - A(I, 8)

1050 IF A(I, 9) > 0 THEN IF A(I, 9) < 82 THEN 1070

1060 GOTO 1000

1070 Z = 0

1080 FOR M = 1 TO W

1090 IF A(I, 9) = B(M) THEN Z = 1

1100 NEXT M

1110 IF Z = 0 THEN 1000

1120 X = 0

1130 FOR P = 1 TO 9

1140 FOR T = 1 TO 9 - P

1150 IF A(I, P) = A(I, P + T) THEN X = 1

1160 NEXT T

1170 NEXT P

1180 IF X = 1 THEN 1000

1190 FOR P = 1 TO 9

1200 FOR Q = 1 TO W

1210 IF B(Q) = A(I, P) THEN B(Q) = 0

1220 NEXT Q

1230 NEXT P

1500 Z = 1

1505 FOR M = 1 TO W

1510 IF B(M) > 0 THEN B(Z) = B(M): Z = Z + 1

1515 NEXT M

1520 RETURN

3200 FOR I = 1 TO 9

3210 FOR J = 1 TO 9

3220 PRINT C(I, J);

3225 PRINT #1, C(I, J);

3230 NEXT J

3235 PRINT : PRINT #1,

3240 NEXT I

3242 PRINT #1,

3245 PRINT : PRINT "KVADRAT POSTROEN!": GOTO 5000

3500 PRINT "NACHALO 2 ETAPA"

3502 FOR M = 1 TO 9

3505 FOR I = 1 TO 9

3510 O = A(1, I)

3520 IF O > 0 THEN 3540

3530 GOTO 3825

3540 FOR J = 1 TO 9

3550 P = A(2, J)

3560 IF P > 0 THEN 3580

3570 GOTO 3820

3580 FOR K = 1 TO 9

3585 Q = A(3, K)

3590 IF Q > 0 THEN 3600

3595 GOTO 3815

3600 FOR L = 1 TO 9

3605 R = A(4, L)

3610 IF R > 0 THEN 3620

3615 GOTO 3810

3620 FOR X = 1 TO 9

3625 S = A(5, X)

3630 IF S > 0 THEN 3640

3635 GOTO 3805

3640 FOR N = 1 TO 9

3645 T = A(6, N)

3650 IF T > 0 THEN 3658

3655 GOTO 3800

3658 FOR A = 1 TO 9

3659 D = A(7, A)

3660 IF D > 0 THEN 3662

3661 GOTO 3795

3662 FOR B = 1 TO 9

3663 E = A(8, B)

3664 IF E > 0 THEN 3666

3665 GOTO 3790

3666 FOR C = 1 TO 9

3667 F = A(9, C)

3668 IF F > 0 THEN 3680

3669 GOTO 3785

3680 IF O + P + Q + R + S + T + D + E + F = 369 THEN 3684

3682 GOTO 3785

3684 FOR Y = 1 TO 9

3686 FOR Z = 1 TO 9

3688 IF A(Y, Z) <> O THEN IF A(Y, Z) <> P THEN IF A(Y, Z) <> Q THEN IF A(Y, Z) <> R THEN IF A(Y, Z) <> S THEN IF A(Y, Z) <> T THEN IF A(Y, Z) <> D THEN IF A(Y, Z) <> E THEN IF A(Y, Z) <> F THEN 3692

3690 A(Y, Z) = 0

3692 NEXT Z

3694 NEXT Y

3696 C(1, M) = O: C(2, M) = P: C(3, M) = Q: C(4, M) = R: C(5, M) = S: C(6, M) = T: C(7, M) = D: C(8, M) = E: C(9, M) = F

3698 FOR Y = 1 TO 9: PRINT C(Y, M): PRINT : NEXT Y

3700 PRINT : GOTO 3850

3785 NEXT C

3790 NEXT B

3795 NEXT A

3800 NEXT N

3805 NEXT X

3810 NEXT L

3815 NEXT K

3820 NEXT J

3825 NEXT I

3830 GOTO 20

3850 NEXT M

3851 PRINT "NACHALO 3 ETAPA": PRINT

3852 FOR I = 1 TO 9

3855 FOR J = 1 TO 9

3860 A(I, J) = C(I, J)

3865 NEXT J

3870 NEXT I

4000 FOR I = 1 TO 9

4005 FOR J = 1 TO 9

4010 IF I = J THEN 4540

4015 FOR K = 1 TO 9

4020 IF K <> I THEN IF K <> J THEN 4030

4025 GOTO 4530

4030 FOR L = 1 TO 9

4035 IF L <> I THEN IF L <> J THEN IF L <> K THEN 4045

4040 GOTO 4520

4045 FOR M = 1 TO 9

4050 IF M <> I THEN IF M <> J THEN IF M <> K THEN IF M <> L THEN 4060

4055 GOTO 4510

4060 FOR N = 1 TO 9

4065 IF N <> I THEN IF N <> J THEN IF N <> K THEN IF N <> L THEN IF N <> M THEN 4067

4066 GOTO 4500

4067 FOR O = 1 TO 9

4068 IF O <> I THEN IF O <> J THEN IF O <> K THEN IF O <> L THEN IF O <> M THEN IF O <> N THEN 4070

4069 GOTO 4495

4070 FOR Q = 1 TO 9

4071 IF Q <> I THEN IF Q <> J THEN IF Q <> K THEN IF Q <> L THEN IF Q <> M THEN IF Q <> N THEN IF Q <> O THEN 4073

4072 GOTO 4490

4073 FOR R = 1 TO 9

4074 IF R <> I THEN IF R <> J THEN IF R <> K THEN IF R <> L THEN IF R <> M THEN IF R <> N THEN IF R <> O THEN IF R <> Q THEN 4080

4075 GOTO 4485

4080 FOR P = 1 TO 9

4082 C(1, P) = A(I, P)

4084 C(2, P) = A(J, P)

4086 C(3, P) = A(K, P)

4088 C(4, P) = A(L, P)

4090 C(5, P) = A(M, P)

4092 C(6, P) = A(N, P)

4094 C(7, P) = A(O, P)

4096 C(8, P) = A(Q, P)

4098 C(9, P) = A(R, P)

4102 NEXT P

4105 Z = 0: Z1 = 0

4110 FOR D = 1 TO 9

4115 Z = Z + C(D, D): Z1 = Z1 + C(D, 10 - D)

4120 NEXT D

4125 IF Z = 369 THEN IF Z1 = 369 THEN 3200

4485 NEXT R

4490 NEXT Q

4495 NEXT O

4500 NEXT N

4510 NEXT M

4520 NEXT L

4530 NEXT K

4540 NEXT J

4550 NEXT I

4560 GOTO 20

5000 CLOSE #1

5010 END

 

Программа написана на языке BASIC и работает с интерпретатором QBASIC.

 

По этой программе я построила 20 магических квадратов девятого порядка (для примера) и записала их в файл, который поместила на сайт.  Эти квадраты здесь:

 

http://www.klassikpoez.narod.ru/mk/mk9pril.htm

 

Вот, для примера, два квадрата (рис. 14):

 

 

75

29

65

49

34

22

5

13

77

 

77

38

71

14

30

39

21

5

74

27

76

37

31

3

30

74

39

52

 

59

23

37

76

1

17

51

62

43

50

6

54

41

17

36

56

63

46

 

26

67

10

11

49

69

63

47

27

9

10

80

2

58

42

73

38

57

 

52

70

45

64

20

7

40

18

53

61

20

69

32

28

71

8

62

18

 

25

13

66

79

50

16

34

42

44

1

59

23

60

68

25

48

40

45

 

61

15

19

31

78

65

32

56

12

81

79

4

47

44

55

19

33

7

 

55

29

3

22

36

9

54

80

81

14

12

26

72

53

67

16

66

43

 

8

73

58

4

48

75

46

24

33

51

78

11

35

64

21

70

15

24

 

6

41

60

68

57

72

28

35

2

 

                                                                      Рис. 14

 

Напомню, что эти квадраты просто магические, то есть не пандиагональные и не ассоциативные.

Вы можете построить ещё такие квадраты в любом количестве. Вероятность того, что программа при многократном выполнении построит два одинаковых квадрата, ничтожно мала. Программу можно зациклить, чтобы она после построения одного квадрата не останавливалась, а переходила к построению следующего квадрата.

 

Интересно отметить следующий факт. Когда я занималась пандиагональными квадратами пятого порядка и придумывала различные программы для их построения, и эту программу пыталась использовать. Вставила в программу блок проверки пандиагональности построенного квадрата, зациклила программу и запустила. Программа строит много магических квадратов (я задавала счётчик до 1000), однако пандиагональных среди них – ни одного! Дело в том, что вероятность появления пандиагонального квадрата среди некоторого, даже и очень большого, количества магических квадратов пятого порядка (а тем более, высших порядков), крайне мала. Поэтому данная программа оказалась непригодной для построения пандиагональных квадратов, и мне пришлось искать другие алгоритмы (обо всём этом читайте в статье “Пандиагональные квадраты пятого порядка”).

 

                                               ***

 

                                                 22 сентября 2007 г.

 

Потрясающая находка у меня! Я уже рассказала о ней на странице “Магические квадраты седьмого порядка”. А теперь здесь расскажу. Я нашла в Интернете матричный метод построения пандиагональных квадратов. На этой странице, конечно, речь пойдёт о пандиагональных квадратах девятого порядка. Ссылку я уже приводила выше, но повторю:

 

http://www.grogono.com/magic/9x9.php

 

Как я уже говорила, статья написана на английском языке. Поэтому я не смогла понять способ создания самой матрицы, но как с её помощью строятся квадраты, я всё-таки поняла. Заинтересовавшиеся читатели могут сами посмотреть статью, а я покажу только практическое применение этого метода.

Итак, приводится матрица, которую вы видите на рис. 15.

 

 

ААСС

ВАСА

САСВ

АВАС

ВВАА

СВАВ

АСВС

ВСВА

ССВВ

АВВС

ВВВА

СВВВ

АССС

ВССА

СССВ

АААС

ВААА

СААВ

АСАС

ВСАА

ССАВ

ААВС

ВАВА

САВВ

АВСС

ВВСА

СВСВ

ВАСВ

САСС

ААСА

ВВАВ

СВАС

АВАА

ВСВВ

ССВС

АСВА

ВВВВ

СВВС

АВВА

ВССВ

СССС

АССА

ВААВ

СААС

АААА

ВСАВ

ССАС

АСАА

ВАВВ

САВС

ААВА

ВВСВ

СВСС

АВСА

САСА

ААСВ

ВАСС

СВАА

АВАВ

ВВАС

ССВА

АСВВ

ВСВС

СВВА

АВВВ

ВВВС

СССА

АССВ

ВССС

СААА

АААВ

ВААС

ССАА

АСАВ

ВСАС

САВА

ААВВ

ВАВС

СВСА

АВСВ

ВВСС

 

                                                                  Рис. 15

 

К этой матрице ещё маленькая табличка (рис. 16):

 

 

1

2

3

4

А

0

0

0

0

В

27

9

3

1

С

54

18

6

2

 

                                                                     Рис. 16

 

Вот и весь инструмент! А теперь мне надо было просто догадаться, что делать дальше, как строить квадрат с помощью этой матрицы. Догадаться было нетрудно ещё и потому, что в статье приведён один квадрат, построенный этим методом. Этот квадрат я привела в начале статьи (см. рис. 3).

Делать надо было вот что: записанные в ячейках матрицы сочетания вычисляются, как суммы входящих в них переменных А, В, С, причём каждая переменная принимает значение в зависимости от позиции, в которой она стоит. Например:

 

ВВСВ=27+9+6+1=43

 

Ещё надо заметить, что в указанной статье квадраты заполняются числами от 0 до n2-1. Поэтому для приведения квадрата к привычному виду надо во всех ячейках увеличить числа на единицу.

 

А затем я построила квадрат с другой таблицей значений переменных, которую вы видите на рис. 17:

 

 

1

2

3

4

А

0

0

0

0

В

54

18

6

2

С

27

9

3

1

 

                                                                  Рис. 17

 

Просто посмотрела на матрицу и увидела, что в центре её при таких значениях переменных будет стоять число 41 и по всей вероятности построенный квадрат будет ассоциативным. Так и оказалось. И вот он – пандиагональный и ассоциативный квадрат девятого порядка! Смотрите, восхищайтесь идеальным квадратом (рис. 18).

 

5

58

33

20

73

48

17

70

45

26

79

54

14

67

42

2

55

30

11

64

39

8

61

36

23

76

51

60

32

4

75

47

19

72

44

16

81

53

25

69

41

13

57

29

1

66

38

10

63

35

7

78

50

22

31

6

59

46

21

74

43

18

71

52

27

80

40

15

68

28

3

56

37

12

65

34

9

62

49

24

77

 

                                                                  Рис. 18

 

Более красивого и симметричного чётно-нечётного рисунка, чем у этого квадрата, я ещё не встречала. Тут симметрия и относительно главных осей, и относительно диагоналей, и относительно центра квадрата. Красивый квадрат! Не правда ли?

 

Далее мне захотелось сделать этот квадрат ещё более совершенным, а именно – чтобы в левой верхней ячейке стояло число 1. Покажу, как я это сделала, заодно и несколько преобразований посмотрите наглядно. Сначала я перенесла этот квадрат на торе (рис. 19):

 

 

5

58

33

20

73

48

17

70

45

 

81

53

25

69

41

13

57

29

1

26

79

54

14

67

42

2

55

30

 

66

38

10

63

35

7

78

50

22

11

64

39

8

61

36

23

76

51

 

31

6

59

46

21

74

43

18

71

60

32

4

75

47

19

72

44

16

 

52

27

80

40

15

68

28

3

56

81

53

25

69

41

13

57

29

1

->

37

12

65

34

9

62

49

24

77

66

38

10

63

35

7

78

50

22

 

5

58

33

20

73

48

17

70

45

31

6

59

46

21

74

43

18

71

 

26

79

54

14

67

42

2

55

30

52

27

80

40

15

68

28

3

56

 

11

64

39

8

61

36

23

76

51

37

12

65

34

9

62

49

24

77

 

60

32

4

75

47

19

72

44

16

 

                                                                  Рис. 19

 

Далее применяю к полученному квадрату преобразование отражения относительно вертикальной оси. Это преобразование не показываю, оно очень простое. К полученному в результате отражения квадрату применяю своё любимое преобразование “строки-диагонали” (рис. 20):

 

 

1

29

57

13

41

69

25

53

81

 

1

34

44

80

23

6

42

66

73

22

50

78

7

35

63

10

38

66

 

20

29

65

72

27

36

31

67

22

71

18

43

74

21

46

59

6

31

 

50

33

57

12

19

52

61

71

14

56

3

28

68

15

40

80

27

52

 

54

78

58

13

37

47

56

8

18

77

24

49

62

9

34

65

12

37

->

43

79

7

5

41

77

75

3

39

45

70

17

48

73

20

33

58

5

 

64

74

26

35

45

69

24

4

28

30

55

2

42

67

14

54

79

26

 

68

11

21

30

63

70

25

49

32

51

76

23

36

61

8

39

64

11

 

60

15

51

46

55

10

17

53

62

16

44

72

19

47

75

4

32

60

 

9

16

40

76

59

2

38

48

81

 

                                                                  Рис. 20

 

Это самый идеальный квадрат из всех, которые я до сих пор встречала. Такая гармония! Просто удивительно красиво. Даже в центральном квадрате 3х3, состоящем из нечётных чисел, сумма чисел равна магической константе.

 

Наверное, с помощью приведённой на рис. 15 матрицы можно построить ещё очень много прекрасных пандиагональных квадратов девятого порядка. Но предоставляю это читателям. Тех, кто знает английский, ещё раз отсылаю по вышеприведённой ссылке. Там вы подробно прочтёте об этом удивительном методе.

 

Я же завершаю свой рассказ о магических квадратах. Мне было очень интересно заниматься этими квадратами и рассказывать вам о полученных результатах. Надеюсь, что вам интересно читать мои страницы.

 

                                                                  ***

 

    8 октября 2007 г.

 

Исследования магических квадратов продолжаются. Решается задача о построении идеальных квадратов нечётного порядка, кратного 3. На страницах “Магические квадраты одиннадцатого порядка” и “Магические квадраты пятнадцатого порядка” вы можете подробно ознакомиться с этой задачей. Смотрите страницы здесь:

 

http://www.klassikpoez.narod.ru/mk11.htm

http://www.klassikpoez.narod.ru/mk15.htm

 

Здесь же я хочу рассказать о побочных результатах, полученных при решении этой задачи и связанных с квадратами девятого порядка.

Придумала оригинальный алгоритм для решения указанной задачи, составила программу. По этой программе из ассоциативного квадрата должен получиться идеальный. Решила отладить программу сначала на квадрате девятого порядка, а потом уже, если всё хорошо пройдёт, переходить к квадрату 15-ого порядка. Однако программа с ходу не пошла. И вижу, в чём прокол, но устранить его сразу не могу. Надо подумать. Однако программа дала мне прекрасные образцы идеальных квадратов девятого порядка. Опытные программисты знают, что программу лучше всего отлаживать на примере, для которого уже известен результат. Вот я и взяла в качестве исходного не ассоциативный, а идеальный квадрат девятого порядка. И программа прекрасно сработала для такого квадрата! Значит, основная связь, заложенная в алгоритме верная. Есть прокол в одном месте. Не буду вдаваться пока в подробности алгоритма, а покажу, какие идеальные квадраты девятого порядка я получила по этой программе.

 

Напомню читателям, что идеальным квадратом считается такой магический квадрат, который является одновременно и пандиагональным, и ассоциативным. На рис. 19 слева и на рис. 20 справа изображены два идеальных квадрата. Второй квадрат получен из первого комбинацией преобразований.

Два разных идеальных квадрата удалось построить Георгию методом хода шахматного коня. Смотрите эти квадраты по ссылкам:

 

http://renuar911.narod.ru/Ideal_9x9.html

http://renuar911.narod.ru/Ideal_9x9_2.html

 

Переставляя строки в одном из идеальных квадратов Георгия, я получила ещё один оригинальный идеальный квадрат, вы видите его на рис. 21.

 

 

79

4

62

32

65

42

12

54

19

53

23

74

6

57

36

64

43

13

38

15

48

27

73

7

58

35

68

30

72

37

16

49

26

77

2

60

1

61

31

71

41

11

51

21

81

22

80

5

56

33

66

45

10

52

14

47

24

75

9

55

34

67

44

69

39

18

46

25

76

8

59

29

63

28

70

40

17

50

20

78

3

 

                                                                      Рис. 21

 

Итак, уже 4 идеальных квадрата имеются. Это я пока рассказываю о тех квадратах, что уже были раньше построены, до применения моей новой программы. Кроме приведённого на рис. 21 квадрата, я получила по той же программе перестановки строк ещё два квадрата, которые не были сразу идеальными, а стали таковыми после применения к ним преобразования “строки-диагонали”. Показываю и эти два идеальных квадрата (рис. 22):

 

 

1

50

72

8

48

67

6

52

65

 

1

26

15

64

62

78

46

44

33

42

61

20

37

59

27

44

57

22

 

66

61

77

48

43

32

3

25

14

80

12

31

78

16

29

73

14

36

 

47

45

31

2

27

13

65

63

76

64

5

54

71

3

49

69

7

47

 

8

24

10

71

60

73

53

42

28

24

43

56

19

41

63

26

39

58

 

70

59

75

52

41

30

7

23

12

35

75

13

33

79

11

28

77

18

 

54

40

29

9

22

11

72

58

74

46

68

9

53

66

4

51

70

2

 

6

19

17

69

55

80

51

37

35

60

25

38

55

23

45

62

21

40

 

68

57

79

50

39

34

5

21

16

17

30

76

15

34

74

10

32

81

 

49

38

36

4

20

18

67

56

81

 

                                                                     Рис. 22

 

Вот такие идеальные квадраты мне известны. Ну, а теперь о моей новой программе. Итак, как я уже сказала, вводим в программу в качестве исходного квадрата не ассоциативный, а идеальный квадрат. Начнём с квадрата, изображённого на рис. 19 слева. На рис. 23 этот квадрат тоже находится слева. Представьте себе, что программа выдала мне этот же самый квадрат. Но пандиагональный квадрат, который строится по моему алгоритму из этого квадрата, должен быть таким (на рис. 23 справа):

 

 

5

58

33

20

73

48

17

70

45

 

37

27

59

63

41

19

23

55

45

26

79

54

14

67

42

2

55

30

 

12

80

46

35

13

72

76

30

5

11

64

39

8

61

36

23

76

51

 

65

40

21

7

57

44

51

26

58

60

32

4

75

47

19

72

44

16

 

34

15

74

78

29

16

11

79

33

81

53

25

69

41

13

57

29

1

->

9

68

43

50

1

60

64

54

20

66

38

10

63

35

7

78

50

22

 

62

28

18

22

81

32

39

14

73

31

6

59

46

21

74

43

18

71

 

49

3

71

66

53

4

8

67

48

52

27

80

40

15

68

28

3

56

 

24

56

31

38

25

75

61

42

17

37

12

65

34

9

62

49

24

77

 

77

52

6

10

69

47

36

2

70

 

                                                                      Рис. 23

 

Вы поняли, как из квадрата слева получается квадрат справа? Просто столбцы левого квадрата записываются в разломанные диагонали правого квадрата. Чтобы это было более наглядно, покажу только два столбца, переписанные в разломанные диагонали (рис. 24):

 

 

37

27

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

26

58

 

 

 

 

 

 

11

79

 

 

 

 

 

 

60

64

 

 

 

 

 

 

81

32

 

 

 

 

 

 

66

53

 

 

 

 

 

 

31

38

 

 

 

 

 

 

52

6

 

 

 

 

 

 

 

                                                                      Рис. 24

 

И так далее. Последний столбец переписывается в главную диагональ. Полученный в результате квадрат пока только пандиагональный. Но преобразованием “строки-диагонали” его легко превратить в идеальный. На рис. 25 показываю преобразованный идеальный квадрат:

 

 

37

60

52

11

31

26

66

5

81

32

27

64

6

79

38

58

53

12

80

39

59

54

10

33

25

65

4

8

46

14

63

20

69

34

75

40

21

67

35

73

41

9

47

15

61

42

7

48

13

62

19

68

36

74

78

17

57

49

72

28

23

43

2

70

29

24

44

3

76

18

55