Н. Макарова
ГРУППЫ ВЗАИМНО ОРТОГОНАЛЬНЫХ ЛАТИНСКИХ КВАДРАТОВ НЕЧЁТНОГО ПОРЯДКА
или
НОВЫЕ АСПЕКТЫ МЕТОДА ЛАТИНСКИХ КВАДРАТОВ
Часть VIII
Данная страница является продолжением страницы
http://www.natalimak1/narod.ru/grolk3.htm
а также цикла статей “Новые аспекты метода латинских квадратов”.
В предыдущей части статьи я остановилась на построении пары ОЛК 21-го порядка, из которой строятся идеальные магические квадраты. Напомню читателям, что рассматривается группа нечётных порядков кратных 3. Следующий порядок в этой группе n = 27. Данный порядок является степенью простого числа 3, поэтому группа взаимно ортогональных латинских квадратов этого порядка полная и состоит из 26 квадратов. В этой группе MOLS только два латинских квадрата не диагональные, остальные 24 диагональные. Из этих диагональных латинских квадратов можно составить 276 пар ОЛК пригодных для построения магических квадратов, из каждой пары ОЛК можно построить два магических квадрата, итого – 552 квадрата. Однако ни один из этих магических квадратов не будет ни ассоциативным, ни идеальным. Пара ОЛК, из которой строятся ассоциативные магические квадраты 27-го порядка, составляется просто (см. аналогичные пары ОЛК для порядков 9 и 15 в предыдущей части статьи). В точной аналогии с парами ОЛК для порядков 9, 15 и 21 строю первый латинский квадрат 27-го порядка для пары, которая даёт идеальные магические квадраты (рис. 1).
Первый латинский квадрат 27-го порядка
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
Рис. 1
Точно так же, как это было показано для порядка 21, можно составить второй латинский квадрат ортогональный данному квадрату с рис. 1 несколькими способами. Покажу здесь только один способ – получаем второй латинский квадрат из первого отражением относительно горизонтальной оси симметрии. Не буду показывать второй латинский квадрат: выполнить отражение относительно горизонтальной оси симметрии очень просто. Покажу только один идеальный магический квадрат, построенный из полученной таким образом пары ОЛК:
25 31 221 195 172 389 363 340 557 531 508 698 726 651 82 110 144 251 277 312 419 445 480 587 613 647 81
84 109 137 252 278 304 420 446 472 588 614 640 80 27 52 220 194 168 388 362 336 556 530 504 697 725 672
54 241 193 167 384 361 335 552 529 503 693 724 671 105 111 136 245 279 305 412 447 473 580 615 641 73 26
132 138 244 272 306 413 439 474 581 607 642 74 19 53 243 214 166 383 357 334 551 525 502 692 720 670 104
242 216 187 382 356 330 550 524 498 691 719 666 103 131 159 246 271 299 414 440 466 582 608 634 75 20 46
158 267 273 298 407 441 467 574 609 635 67 21 47 235 215 189 403 355 329 546 523 497 687 718 665 99 130
208 188 405 376 328 545 519 496 686 714 664 98 126 157 266 294 300 406 434 468 575 601 636 68 13 48 236
265 293 321 408 433 461 576 602 628 69 14 40 237 209 181 404 378 349 544 518 492 685 713 660 97 125 153
182 397 377 351 565 517 491 681 712 659 93 124 152 261 292 320 429 435 460 569 603 629 61 15 41 229 210
288 319 428 456 462 568 596 630 62 7 42 230 202 183 398 370 350 567 538 490 680 708 658 92 120 151 260
399 371 343 566 540 511 679 707 654 91 119 147 259 287 315 427 455 483 570 595 623 63 8 34 231 203 175
314 423 454 482 591 597 622 56 9 35 223 204 176 391 372 344 559 539 513 700 706 653 87 118 146 255 286
364 345 560 532 512 702 727 652 86 114 145 254 282 313 422 450 481 590 618 624 55 2 36 224 196 177 392
421 449 477 589 617 645 57 1 29 225 197 169 393 365 337 561 533 505 701 729 673 85 113 141 253 281 309
338 553 534 506 694 728 675 106 112 140 249 280 308 417 448 476 585 616 644 78 3 28 218 198 170 385 366
444 475 584 612 643 77 24 30 217 191 171 386 358 339 554 526 507 695 721 674 108 133 139 248 276 307 416
555 527 499 696 722 667 107 135 160 247 275 303 415 443 471 583 611 639 76 23 51 219 190 164 387 359 331
470 579 610 638 72 22 50 240 192 163 380 360 332 547 528 500 688 723 668 100 134 162 268 274 302 411 442
520 501 689 715 669 101 127 161 270 295 301 410 438 469 578 606 637 71 18 49 239 213 165 379 353 333 548
577 605 633 70 17 45 238 212 186 381 352 326 549 521 493 690 716 661 102 128 154 269 297 322 409 437 465
494 682 717 662 94 129 155 262 296 324 430 436 464 573 604 632 66 16 44 234 211 185 402 354 325 542 522
600 631 65 12 43 233 207 184 401 375 327 541 515 495 683 709 663 95 121 156 263 289 323 432 457 463 572
684 710 655 96 122 148 264 290 316 431 459 484 571 599 627 64 11 39 232 206 180 400 374 348 543 514 488
626 60 10 38 228 205 179 396 373 347 564 516 487 677 711 656 88 123 149 256 291 317 424 458 486 592 598
704 657 89 115 150 257 283 318 425 451 485 594 619 625 59 6 37 227 201 178 395 369 346 563 537 489 676
58 5 33 226 200 174 394 368 342 562 536 510 678 703 650 90 116 142 258 284 310 426 452 478 593 621 646
649 83 117 143 250 285 311 418 453 479 586 620 648 79 4 32 222 199 173 390 367 341 558 535 509 699 705
Предлагаю читателям составить второй ортогональный соквадрат для латинского квадрата с рис. 1 другим способом, как это сделано в цикле статей из журнала “Recreational Mathematics” для порядков 9 и 15 и показано мной в предыдущей части статьи для порядка 21. Можно составить и пару обобщённых ортогональных латинских квадратов, которая даст идеальные магические квадраты с оригинальной формой начальной цепочки.
Всё точно так же можно повторить для следующего порядка 33. Для данного порядка математикам удалось составить группу MOLS, состоящую из 5 квадратов. Мне эта группа неизвестна.
Однако пора переходить к обобщению метода. Немного повторю историю построения идеальных магических квадратов нечётного порядка. Все нечётные порядки, начиная с n = 5 (для порядка 3 идеального квадрата не существует), делятся на две группы: порядки не кратные 3 и порядка кратные 3. Так получается, что для этих двух групп алгоритмы построения идеальных магических квадратов хотя и похожие, но несколько различны. Я шла в построении идеальных магических квадратов нечётного порядка путём, в котором метод латинских квадратов стал мне известен после того, как был придуман метод качелей. Здесь будет дано полное представление метода латинских квадратов для построения идеальных магических квадратов нечётного порядка.
Построение идеальных магических квадратов группы порядков не кратных 3 методом латинских квадратов выполняется очень просто. Этому посвящена статья http://www.klassikpoez.narod.ru/idlat.htm
Алгоритм реализован в виде программы, написанной на языке QBASIC.
На рис. 2 показан первый латинский квадрат для пары ОЛК любого нечётного порядка N не кратного 3 (копирую из указанной статьи).
0 |
N-1 |
n-2 |
… |
3 |
2 |
1 |
2 |
1 |
0 |
N-1 |
N-2 |
… |
3 |
... |
… |
… |
… |
… |
… |
… |
... |
… |
… |
… |
… |
… |
… |
... |
… |
… |
… |
… |
… |
… |
... |
… |
… |
… |
… |
N-2 |
N-3 |
N-2 |
N-3 |
… |
2 |
1 |
0 |
N-1 |
Рис. 2
А это текст программы для построения идеального магического квадрата любого нечётного порядка не кратного 3.
ТЕКСТ ПРОГРАММЫ
(язык QBASIC)
10 OPEN "MK.txt" FOR OUTPUT AS #1
15 PRINT "VVEDITE PORYADOK KVADRATA"
20 INPUT N
25 IF N / 2 - INT(N / 2) = 0 THEN 15
30 IF N / 3 - INT(N / 3) = O THEN 15
40 DIM A(N, N), C(N, N)
45 A(1, 1) = 0: S = N * (N * N + 1) / 2
50 FOR I = 2 TO N: A(1, I) = N + 1 - I: NEXT I
55 J = 2
60 A(J, 1) = A(J - 1, N - 1): A(J, 2) = A(J - 1, N)
65 FOR X = 3 TO N: A(J, X) = A(J - 1, X - 2): NEXT X
70 J = J + 1
75 IF J > N THEN 125
80 GOTO 60
125 FOR X = 1 TO N
130 FOR Y = 1 TO N
135 C(X, Y) = N * A(X, Y) + A(N - X + 1, Y) + 1
140 NEXT Y
145 NEXT X
150 Z1 = 0: Z2 = 0: Z3 = C(1, 1): Z4 = C(1, N)
152 FOR P = 1 TO N: Z1 = Z1 + C(P, P): Z2 = Z2 + C(N + 1 - P, P): NEXT P
154 FOR Q = 2 TO N: Z3 = Z3 + C(N + 2 - Q, Q): Z4 = Z4 + C(Q, Q - 1): NEXT Q
156 IF Z1 = S THEN IF Z2 = S THEN IF Z3 = S THEN IF Z4 = S THEN 250
158 GOTO 290
250 FOR X = 1 TO N
255 FOR Y = 1 TO N
260 PRINT C(X, Y);
265 PRINT #1, C(X, Y);
270 NEXT Y
275 PRINT : PRINT #1,
280 NEXT X
282 PRINT : PRINT Z1; Z2; Z3; Z4: GOTO 300
290 PRINT "PROIZOSHLA OSHIBKA!"
300 END
Примечание: замечу, что я немного подкорректировала программу. Отличие от программы, приведённой в указанной выше статье, состоит в том, что в настоящей программе не строится второй латинский квадрат, просто в формуле для построения магического квадрата учитывается, что второй латинский квадрат получается из первого латинского квадрата отражением относительно горизонтальной оси симметрии (см. строку 135). Это позволило мне несколько увеличить максимальный порядок идеального квадрата, который строится по этой программе. По прежней программе можно построить самый большой идеальный квадрат порядка 97, приведённая сейчас программа построила квадрат порядка 127. Кроме того, здесь добавлена проверка сумм в главных и двух разломанных диагоналях построенного магического квадрата, на всякий случай.
Построение идеальных магических квадратов группы порядков кратных 3 методом латинских квадратов раньше было реализовано мной только на основании метода качелей, то есть я могла составить нужную для построения идеального магического квадрата пару ОЛК, зная заранее номера циклов качания качелей. Теперь я могу полностью отвлечься от метода качелей и разработать алгоритм для данной группы порядков на основании показанных выше примеров из цикла статей журнала “Recreational Mathematics”. Это будет в чистом виде метод латинских квадратов, для которого не нужна никакая дополнительная информация.
Итак, для любого порядка n = 3(2k + 1), k = 1, 2, 3 … надо составить пару ортогональных латинских квадратов, их которой можно построить идеальный магический квадрат. Выше было показано решение этой задачи на конкретных примерах для порядков 9, 15, 21 и 27. Из этих примеров видно, что достаточно составить первую строку первого латинского квадрата. Дальше всё выполняется очень просто. В первом латинском квадрате каждая следующая строка получается из предыдущей циклическим сдвигом с постоянным шагом, второй латинский квадрат, ортогональный первому, получается из первого отражением относительно горизонтальной оси симметрии (возможны другие варианты, но мы выберем указанный способ получения второго латинского квадрата). Значит, составив первую строку первого латинского квадрата, мы полностью решим поставленную задачу. Дальше всё выполняется элементарно.
Рассмотрим первые строки первых латинских квадратов из конкретных примеров:
n = 9: 0 1 7 8 6 3 4 5 2
n = 15: 0 1 8 7 6 13 14 12 3 4 5 9 10 11 2
n = 21: 0 1 8 7 6 14 13 12 19 20 18 3 4 5 9 10 11 15 16 17 2
n = 27: 0 1 8 7 6 14 13 12 20 19 18 25 26 24 3 4 5 9 10 11 15 16 17 21 22 23 2
Закономерности составления первой строки очевидны. Чтобы они стали ещё более наглядными, составлю следующую таблицу из первых строк первого латинского квадрата для порядков 9 - 33 (рис. 3):
|
0 |
1 |
7 |
8 |
6 |
3 |
4 |
5 |
2 |
|
||||||||||||||||||||||
|
0 |
1 |
8 |
7 |
6 |
13 |
14 |
12 |
3 |
4 |
5 |
9 |
10 |
11 |
2 |
|
||||||||||||||||
|
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
19 |
20 |
18 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
2 |
|
||||||||||
|
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
25 |
26 |
24 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
2 |
|
||||
0 |
1 |
8 |
7 |
6 |
14 |
13 |
12 |
20 |
19 |
18 |
26 |
25 |
24 |
31 |
32 |
30 |
3 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
27 |
28 |
29 |
2 |
Рис. 3
Теперь напишу общую формулу для первой строки в первом латинском квадрате пары ОЛК порядка n = 3(2k + 1), k = 2, 3, 4 …:
0; 1; 8; 7; 6; … 8+6*(k-2); 7+6*(k-2); 6+6*(k-2); n-2; n-1; n-3; 3; 4; 5;… 3+6*(k-1); 4+6*(k-1); 5+6*(k-1); 2
Понятно, что для порядка n = 9 (k = 1) формула не работает. Вспоминаю, что при составлении таблицы начальных цепочек для группы частных решений в методе качелей (для построения идеальных магических квадратов рассматриваемой группы порядков) я начинала тоже с порядка n = 15, начальная цепочка идеального квадрата порядка 9 в таблицу не вписалась.
Итак, всё готово для того, чтобы реализовать алгоритм построения идеальных магических квадратов нечётного порядка кратного 3 методом латинских квадратов. Далее можно скомпоновать общую программу из двух частей: первая часть – для порядков не кратных 3 (эта программа приведена выше), вторая часть – для порядков кратных 3. Таким образом будет получена общая программа для построения методом латинских квадратов идеального магического квадрата любого нечётного порядка, начиная с n = 5.
Замечу, что в программу для порядков кратных 3 можно заложить и другие способы составления второго латинского квадрата, которые были показаны в статье.
***
Представляю текст программы для построения идеальных магических квадратов нечётного порядка кратного 3, начиная с n = 9, методом латинских квадратов.
ТЕКСТ ПРОГРАММЫ
(язык QBASIC)
5 OPEN "MK.txt" FOR OUTPUT AS #1
10 PRINT "VVEDITE PORYADOK KVADRATA"
15 INPUT N
22 IF N / 2 - INT(N / 2) = 0 THEN 15
25 IF N / 3 - INT(N / 3) <> 0 THEN 15
30 DIM A(N, N), B(N, N)
35 S = N * (N * N + 1) / 2: M = (N + 1) / 2
37 IF N <> 9 THEN 50
45 A(1, 1) = 0: A(1, 2) = 1: A(1, 3) = 7: A(1, 4) = 8: A(1, 5) = 6: A(1, 6) = 3: A(1, 7) = 4: A(1, 8) = 5: A(1, 9) = 2: GOTO 300
50 A(1, 1) = 0: A(1, 2) = 1: A(1, 3) = 8: A(1, 4) = 7: A(1, 5) = 6: A(1, N) = 2
52 A(1, M - 2) = N - 2: A(1, M - 1) = N - 1: A(1, M) = N - 3: A(1, M + 1) = 3: A(1, M + 2) = 4: A(1, M + 3) = 5
54 Q = 5
56 IF Q + 1 = M - 2 THEN 62
58 A(1, Q + 1) = A(1, Q - 2) + 6: A(1, Q + 2) = A(1, Q - 1) + 6: A(1, Q + 3) = A(1, Q) + 6
60 Q = Q + 3: GOTO 56
62 Q = M + 3
64 IF Q + 1 = N THEN 300
66 A(1, Q + 1) = A(1, Q - 2) + 6: A(1, Q + 2) = A(1, Q - 1) + 6: A(1, Q + 3) = A(1, Q) + 6
68 Q = Q + 3: GOTO 64
300 J = 2
302 FOR L = 1 TO M - 1
304 A(J, L) = A(J - 1, L + M)
306 NEXT L
308 FOR L = M TO N: A(J, L) = A(J - 1, L - M + 1): NEXT L
310 J = J + 1
312 IF J > N THEN 320
314 GOTO 302
320 FOR R = 1 TO N
322 FOR T = 1 TO N
324 B(R, T) = N * A(R, T) + A(N + 1 - R, T) + 1
326 NEXT T
328 NEXT R
330 Z1 = 0: Z2 = 0: Z3 = B(1, 1): Z4 = B(1, N)
332 FOR X = 1 TO N: Z1 = Z1 + B(X, X): Z2 = Z2 + B(N + 1 - X, X): NEXT X
334 FOR Y = 2 TO N: Z3 = Z3 + B(N + 2 - Y, Y): Z4 = Z4 + B(Y, Y - 1): NEXT Y
336 IF Z1 = S THEN IF Z2 = S THEN IF Z3 = S THEN IF Z4 = S THEN 420
338 PRINT "PROIZOSHLA OSHIBKA!": GOTO 500
420 FOR X = 1 TO N
422 FOR Y = 1 TO N
424 PRINT B(X, Y);
425 PRINT #1, B(X, Y);
426 NEXT Y
428 PRINT : PRINT #1,
430 NEXT X
432 PRINT : PRINT Z1; Z2; Z3; Z4
500 END
Примечание: если порядок квадрата равен 9, то первая строка первого латинского квадрата не строится по общей формуле, она строится непосредственным присвоением значений элементам этой строки (см. строку 45 в программе).
Язык QBASIC позволил мне построить идеальный магический квадрат максимального (нечётного порядка кратного 3) n = 123. Ниже показан идеальный магический квадрат 33-го порядка, построенный по данной программе.
31 37 269 237 208 473 441 412 677 645 616 881 849 820 1052 1086 993 100 134 174 305 337 378 509 541 582 713 745 786 917 949 989 99
102 133 167 306 338 370 510 542 574 714 746 778 918 950 982 98 33 64 268 236 204 472 440 408 676 644 612 880 848 816 1051 1085 1020
66 295 235 203 468 439 407 672 643 611 876 847 815 1047 1084 1019 129 135 166 299 339 371 502 543 575 706 747 779 910 951 983 91 32
162 168 298 332 372 503 535 576 707 739 780 911 943 984 92 25 65 297 262 202 467 435 406 671 639 610 875 843 814 1046 1080 1018 128
296 264 229 466 434 402 670 638 606 874 842 810 1045 1079 1014 127 161 195 300 331 365 504 536 568 708 740 772 912 944 976 93 26 58
194 327 333 364 497 537 569 700 741 773 904 945 977 85 27 59 289 263 231 493 433 401 666 637 605 870 841 809 1041 1078 1013 123 160
256 230 495 460 400 665 633 604 869 837 808 1040 1074 1012 122 156 193 326 360 366 496 530 570 701 733 774 905 937 978 86 19 60 290
325 359 393 498 529 563 702 734 766 906 938 970 87 20 52 291 257 223 494 462 427 664 632 600 868 836 804 1039 1073 1008 121 155 189
224 487 461 429 691 631 599 864 835 803 1035 1072 1007 117 154 188 321 358 392 525 531 562 695 735 767 898 939 971 79 21 53 283 258
354 391 524 558 564 694 728 768 899 931 972 80 13 54 284 250 225 488 454 428 693 658 598 863 831 802 1034 1068 1006 116 150 187 320
489 455 421 692 660 625 862 830 798 1033 1067 1002 115 149 183 319 353 387 523 557 591 696 727 761 900 932 964 81 14 46 285 251 217
386 519 556 590 723 729 760 893 933 965 73 15 47 277 252 218 481 456 422 685 659 627 889 829 797 1029 1066 1001 111 148 182 315 352
448 423 686 652 626 891 856 796 1028 1062 1000 110 144 181 314 348 385 518 552 589 722 756 762 892 926 966 74 7 48 278 244 219 482
517 551 585 721 755 789 894 925 959 75 8 40 279 245 211 483 449 415 687 653 619 890 858 823 1027 1061 996 109 143 177 313 347 381
416 679 654 620 883 857 825 1054 1060 995 105 142 176 309 346 380 513 550 584 717 754 788 921 927 958 68 9 41 271 246 212 475 450
546 583 716 750 787 920 954 960 67 2 42 272 238 213 476 442 417 680 646 621 884 850 824 1056 1087 994 104 138 175 308 342 379 512
681 647 613 885 851 817 1055 1089 1021 103 137 171 307 341 375 511 545 579 715 749 783 919 953 987 69 1 35 273 239 205 477 443 409
578 711 748 782 915 952 986 96 3 34 266 240 206 469 444 410 673 648 614 877 852 818 1048 1088 1023 130 136 170 303 340 374 507 544
640 615 878 844 819 1049 1081 1022 132 163 169 302 336 373 506 540 577 710 744 781 914 948 985 95 30 36 265 233 207 470 436 411 674
709 743 777 913 947 981 94 29 63 267 232 200 471 437 403 675 641 607 879 845 811 1050 1082 1015 131 165 196 301 335 369 505 539 573
608 871 846 812 1042 1083 1016 124 164 198 328 334 368 501 538 572 705 742 776 909 946 980 90 28 62 294 234 199 464 438 404 667 642
738 775 908 942 979 89 24 61 293 261 201 463 431 405 668 634 609 872 838 813 1043 1075 1017 125 157 197 330 361 367 500 534 571 704
873 839 805 1044 1076 1009 126 158 190 329 363 394 499 533 567 703 737 771 907 941 975 88 23 57 292 260 228 465 430 398 669 635 601
770 903 940 974 84 22 56 288 259 227 492 432 397 662 636 602 865 840 806 1036 1077 1010 118 159 191 322 362 396 526 532 566 699 736
832 807 1037 1069 1011 119 151 192 323 355 395 528 559 565 698 732 769 902 936 973 83 18 55 287 255 226 491 459 399 661 629 603 866
901 935 969 82 17 51 286 254 222 490 458 426 663 628 596 867 833 799 1038 1070 1003 120 152 184 324 356 388 527 561 592 697 731 765
800 1030 1071 1004 112 153 185 316 357 389 520 560 594 724 730 764 897 934 968 78 16 50 282 253 221 486 457 425 690 630 595 860 834
930 967 77 12 49 281 249 220 485 453 424 689 657 597 859 827 801 1031 1063 1005 113 145 186 317 349 390 521 553 593 726 757 763 896
1032 1064 997 114 146 178 318 350 382 522 554 586 725 759 790 895 929 963 76 11 45 280 248 216 484 452 420 688 656 624 861 826 794
962 72 10 44 276 247 215 480 451 419 684 655 623 888 828 793 1025 1065 998 106 147 179 310 351 383 514 555 587 718 758 792 922 928
1058 999 107 139 180 311 343 384 515 547 588 719 751 791 924 955 961 71 6 43 275 243 214 479 447 418 683 651 622 887 855 795 1024
70 5 39 274 242 210 478 446 414 682 650 618 886 854 822 1026 1057 992 108 140 172 312 344 376 516 548 580 720 752 784 923 957 988
991 101 141 173 304 345 377 508 549 581 712 753 785 916 956 990 97 4 38 270 241 209 474 445 413 678 649 617 882 853 821 1053 1059
Итак, объединив две приведённые здесь программы в одну, вы можете получить общую программу для построения идеальных магических квадратов любого нечётного порядка n = 2k + 1, k = 2, 3, 4, … методом латинских квадратов.
На языке QBASIC вы сможете построить идеальные магические квадраты порядков 5 – 127. Переписав программу на другой язык, вы построите квадраты больших порядков.
Интересно отметить, что полученная мной раньше методом качелей группа частных решений для идеальных магических квадратов нечётного порядка кратного 3 не совпадает с группой частных решений, получаемой по представленному здесь алгоритму. Таким образом, мы имеем вторую группу частных решений.
Покажу связь метода латинских квадратов и метода качелей, которая была установлена мной раньше. Для демонстрации возьму идеальный магический квадрат 9-го порядка, построенный по представленному здесь алгоритму (рис. 4).
7 |
13 |
68 |
78 |
57 |
28 |
38 |
53 |
27 |
30 |
37 |
47 |
26 |
9 |
16 |
67 |
77 |
60 |
18 |
70 |
76 |
59 |
33 |
39 |
46 |
20 |
8 |
42 |
48 |
19 |
2 |
17 |
72 |
79 |
58 |
32 |
71 |
81 |
61 |
31 |
41 |
51 |
21 |
1 |
11 |
50 |
24 |
3 |
10 |
65 |
80 |
63 |
34 |
40 |
74 |
62 |
36 |
43 |
49 |
23 |
6 |
12 |
64 |
22 |
5 |
15 |
66 |
73 |
56 |
35 |
45 |
52 |
55 |
29 |
44 |
54 |
25 |
4 |
14 |
69 |
75 |
Рис. 4
Ещё надо показать первый латинский квадрат в паре ОЛК, из которой этот идеальный магический квадрат построен (рис. 5).
0 |
1 |
7 |
8 |
6 |
3 |
4 |
5 |
2 |
3 |
4 |
5 |
2 |
0 |
1 |
7 |
8 |
6 |
1 |
7 |
8 |
6 |
3 |
4 |
5 |
2 |
0 |
4 |
5 |
2 |
0 |
1 |
7 |
8 |
6 |
3 |
7 |
8 |
6 |
3 |
4 |
5 |
2 |
0 |
1 |
5 |
2 |
0 |
1 |
7 |
8 |
6 |
3 |
4 |
8 |
6 |
3 |
4 |
5 |
2 |
0 |
1 |
7 |
2 |
0 |
1 |
7 |
8 |
6 |
3 |
4 |
5 |
6 |
3 |
4 |
5 |
2 |
0 |
1 |
7 |
8 |
Рис. 5
А теперь показываю образующую таблицу идеального магического квадрата с рис. 4, если бы он строился методом качелей (рис. 6):
|
1 |
11 |
71 |
81 |
61 |
31 |
41 |
51 |
21 |
-1 |
2 |
17 |
72 |
79 |
58 |
32 |
42 |
48 |
19 |
-6 |
8 |
18 |
70 |
76 |
59 |
33 |
39 |
46 |
20 |
-1 |
9 |
16 |
67 |
77 |
60 |
30 |
37 |
47 |
26 |
2 |
7 |
13 |
68 |
78 |
57 |
28 |
38 |
53 |
27 |
3 |
4 |
14 |
69 |
75 |
55 |
29 |
44 |
54 |
25 |
-1 |
5 |
15 |
66 |
73 |
56 |
35 |
45 |
52 |
22 |
-1 |
6 |
12 |
64 |
74 |
62 |
36 |
43 |
49 |
23 |
3 |
3 |
10 |
65 |
80 |
63 |
34 |
40 |
50 |
24 |
2 |
k=0 |
k=1 |
k=7 |
k=8 |
k=6 |
k=3 |
k=4 |
k=5 |
k=2 |
Рис. 6
Читатели, знакомые с методом качелей, знают, что в последней строке образующей таблицы находятся номера циклов качания качелей. Эти номера и определяют первую строку первого латинского квадрата (см. на рис. 5). В столбцах образующей таблицы мы имеем набор чисел, соответствующий данному номеру цикла качания качелей. Так, например, циклу k=0 соответствует начальная цепочка магического квадрата – числа от 1 до 9, циклу k=1 соответствует набор чисел от 10 до 18 и т. д. На рис. 4 и рис. 5 закрашены три первые цикла в первом латинском квадрате и в магическом квадрате, цикл k=0 – белые ячейки, цикл k=1 – голубые ячейки, цикл k=7 – розовые ячейки. Связь циклов качания качелей в латинском квадрате, в образующей таблице и в магическом квадрате совершенно очевидна. Более подробно о связи двух методов читайте в ранних статьях, посвящённых построению идеальных магических квадратов.
***
Читайте мою виртуальную книгу “Волшебный мир магических квадратов”:
http://www.klassikpoez.narod.ru/glavnaja.htm
8 – 10 февраля 2009 г.
г. Саратов