Это как раз естественно: чем больше порядок, тем больше степеней свободы и тем легче построить магический квадрат.
Да, ice00 сказал мне в личной переписке то же самое, когда я удивилась, почему он так легко построил квадрат 14-го порядка из последовательных смитов, а квадрат 6-го порядка и у него пока не получился.
Таким образом, мы имеем очень хорошие задачи:
1. построить наименьшие магические квадраты порядков 6, 7, 8, ... из произвольных смитов;
2. построить наименьшие магические квадраты из последовательных смитов порядков 3 - 9.
3. дать окончательный ответ для квадрата 10-го порядка из следующего массива последовательных смитов:
с магической константой
. Существует или нет такой магический квадрат?
Я хочу проверить: возможно для больших порядков и первая задача будет решаться проще, чем для маленьких порядков. О результате проверки сообщу.
P. S. У меня сложилось впечатление, что магический квадрат большого порядка построить сложнее потому, что по моим программам это сложно выполнить технически; уже для порядков больше 15 мои программы не дают результаты за приемлемое время. Но как я теперь поняла, тут всё дело в языке программирования. Мне кажется, что и алгоритм построения у нас с ice00 похож, у него тоже всё начинается с генерации набора из n строк, так что сумма чисел в каждой строке равна магической константе квадрата, а потом он тоже "идёт на столбцы и диагонали". А генерация набора строк тоже выполняется с использованием функции случайных чисел. Так что, если переписать мои программы на компилируемый язык с хорошим быстродействием, они, возможно, тоже будут давать результаты и для больших порядков довольно быстро. К сожалению, я сама не умею это сделать, а помощников у меня нет.
Читатель, который вчера получил моё приложение со всеми магическими квадратами 4-го порядка, просит выложить код программы, по которой они построены. Просто он не программист, а вот изучением магических квадратов очень интересуется. Я ему сказала, что пишу программы на древнем языке; он ответил, что у него есть друзья программисты, и они перепишут программу на современный язык.
На этом форуме в теме "Программирование" была переписана на два современных языка моя программа генерации простых чисел. Говорят, что это неплохая программа. Я поместила оба кода в Википедию (статья "Простые числа"). Разумеется, эта программа не может генерировать простые числа для очень больших значений (для этого есть матпакеты), но для небольших значений она очень удобна. К тому же, в отличие от программы, приведённой ранее в Википедии, моя программа позволяет генерировать простые числа в любом заданном интервале, а не только с начала натурального ряда.
-- Чт окт 08, 2009 08:33:59 --ice00Я вчера построила по вашим программам магические квадраты из последовательных смитов до порядка 26 включительно. Сейчас стала переписывать результаты в файл и заметила такой недостаток: нкоторые числа в квадрате напечатаны без пробела, сливаются в одно два или даже три числа. Стала смотреть все квадраты, до порядка 19 такого явления не увидела. А вот квадрат 20-го порядка:
Код:
2934 666 8864 9634 2583 5088 690 2038 4960 7438 1581 5386 11388627 9396 7119 3864 107919657 7136
3294 1921 1626 7834 5926 5422 8568 7674 5098 5526 1952 6835 107976880 9742 1858 5915 634 9166 5172
8005 778 4054 1086 8077 3138 10462107058736 2944 3663 8372 9387 1449 2362 202 8680 8149 4126 7465
1872 4832 3595 2745 8883 378 6385 7824 113587287 6760 5269 1908 2958 1255 7078 9296 106062785 8766
10296110656603 729 2227 6981 8158 9355 4209 7051 4959 7062 2434 438 10489576 958 8095 9427 728
5062 517 9778 3865 6188 4880 9294 8518 9717 2265 2067 3622 9684 3258 5539 8790 4557 2409 2484 9346
2578 6252 4594 3390 109664702 762 913 8154 9571 7726 4794 4162 4981 9276 9975 1842 1881 8253 7068
8196 105921165 8851 2576 5935 3168 2218 4306 7195 7249 6693 107368307 1795 2079 9760 636 648 9735
9843 6531 2515 7089 2911 2605 4592 5854 3226 7809 7695 9840 5642 8914 5305 1903 6684 6718 1736 4428
2839 9193 7764 104193694 9301 8792 105796259 526 9648 1822 1642 6457 4185 9483 483 3366 4743 645
6036 8545 11209922 7683 6934 2751 8257 5602 5253 10494706 1284 5936 8277 3946 9414 5946 319 2326
7762 7186 9708 7627 6054 1507 7978 4954 2155 346 6702 9184 1029110761654 3564 4414 2286 4855 3852
852 6187 825 7952 5298 1776 9535 1755 274 9598 5388 8754 9015 108064974 5818 9285 2173 7402 4173
2902 9522 8901 7447 4472 9382 2366 3246 4464 5458 2888 8023 2974 2475 6084 8421 4369 9274 5242 3930
2461 3091 2970 382 6096 9094 9386 1678 9924 1111 166 7782 113858628 9968 1962 3690 4191 9861 8014
102012722 3802 7026 2688 4189 4765 3345 4918 6115 9229 1894 6816 8653 1966 8466 9639 7712 7339 355
6178 106982182 588 6315 6855 5998 7503 107866567 2679 562 454 6295 3442 6583 5071 8073 7227 7784
115832964 6439 9895 9880 9031 6344 5638 1633 1282 9633 2614 391 1935 5248 9330 2965 9942 895 4198
3174 663 9849 8874 3649 10669985 6171 2556 8412 1376 8347 535 9036 1219 6502 106892373 108875874
5772 7915 5397 5485 5674 3973 861 3615 3505 100869985 4279 915 3046 106648185 265 6585 4788 10845
Посмотрите, например, на началр пятой строки. Там, по-моему, три числа слились в одно число. И таких соединившихся чисел очень много во всех следующих квадратах. Скажите, пожалуйста, почему так происходит? Это недостаток ваших программ или это у меня какие-то сбои при выводе результата в файл? Я попробовала вручную разделить слившиеся числа, но это очень трудно сделать.
-- Чт окт 08, 2009 09:49:56 --Да!
Я начала проверку с наименьшего квадрата 15-го порядка из смитов. И сразу же всё получилось.
Массив смитов:
, но заменить число 6115 на число 6188 и число 6171 на число 6187. Магическая константа равна
.
Квадрат построися за 0,375 секунд.
Код:
4794 1449 382 627 5539 2576 3294 1736 1376 5874 5422 3226 3973 85 3615
3138 2965 1921 6187 1903 2688 4855 5772 2484 2578 2409 1633 2614 2286 535
2679 483 4198 2515 778 5642 3564 645 5638 1966 4126 4832 1219 729 4954
4557 4185 5062 4918 3046 1776 2475 634 2218 5305 2227 825 166 2722 3852
1165 346 1795 3663 3864 265 1111 4189 5854 2785 2839 4594 5098 3442 2958
4428 5915 5946 94 1908 562 1822 2888 3690 1962 1507 3258 6096 958 2934
391 4173 27 5248 1255 58 1282 5397 5926 3390 5386 690 2173 2970 5602
922 2605 1642 319 1952 4464 6188 3946 5269 576 5242 2067 728 4880 3168
4209 3366 5388 378 3802 2751 1284 913 3246 3174 3091 1678 202 5526 4960
5253 4191 1755 5674 2461 4702 2366 6036 274 1881 985 4592 2556 588 654
2079 4959 666 2373 706 6084 3595 4981 663 3622 1858 4369 2434 5458 121
4765 648 5172 2902 4743 5935 4974 2265 861 4 2038 1935 4788 2583 355
22 2964 5088 1086 5818 454 4306 517 1842 5936 5485 2944 852 2182 4472
1872 2974 3345 4054 5298 3649 526 2155 762 4279 438 4414 5071 3505 1626
3694 2745 1581 3930 895 2362 2326 1894 3865 636 915 2911 5998 6054 4162
С меньшей магической константой мне не удалось сформировать массив смитов (надо бы это проверить). Для сравнения: магическая константа квадрата 15-го порядка из последовательных смитов равна
.
Теперь я пойду по убывающей, начну проверять квадраты 14, 13, ... порядков.