Искала шаблон, состоящий из вычетов 0, 4 и 6, быстро не попался.
Да, из одних 4 скорее всего получится квадрат с минимальной магической константой.
Сделала свою хитрую программу, разделила все смиты с вычетом 4 на 4 группы. Одна группа совсем не содержит свободных переменных, и я запихала в неё 120 смитов. В программе 17 свободных переменных (магическая константа заранее не задаётся, только наложила на неё ограничение:
). Свободные переменные пробегают всего 13 или 11 значений. Программа хорошая. Она моментально находит 27 чисел. Но работать у меня будет всё же очень долго. Вроде более-менее отлажена, хотя протестировать не на чем; поэтому подводные камни, конечно, возможны.
Могу выложить, если есть желающие покрутить.
А вообще, опять та же просьба: кто может переписать программу на С++? Это ведь намного уменьшит время выполнения программы.
___
Решила ещё раз посмотреть на шаблоны для построения пандиагональных квадратов 6-го порядка из простых чисел с использованием числа 3. Опять у меня непонятки.
maxalэто ваш шаблон, только я его переписала по модулю 6 и перенесла на торе, чтобы 3 стояла в той же ячейке, как в моём шаблоне:
Код:
5 5 3 5 5 1
1 5 1 1 5 5
1 5 1 5 1 5
1 1 1 1 1 1
5 1 5 5 1 1
5 1 1 1 5 5
Этот шаблон совпадает с моим шаблоном № 1, умноженным на -1, вот с этим:
Код:
1 1 3 1 1 5
5 1 5 5 1 1
5 1 5 1 5 1
5 5 5 5 5 5
1 5 1 1 5 5
1 5 5 5 1 1
Вы писали, что это единственный шаблон с точностью до изоморфизма и умножения на -1.
Но вот мой шаблон № 2:
Код:
1 1 3 1 1 5
1 5 5 1 5 1
5 1 5 1 5 1
5 5 5 5 5 5
5 1 1 5 1 5
1 5 5 5 1 1
Разве мои шаблоны № 1 и № 2 изоморфны?
-- Ср авг 25, 2010 13:58:10 --Выкладываю программу:
http://www.natalimak1.narod.ru/mk/PAN6W4.rarВ архиве исходник программы
PAN6W4.BAS, написанный на QBASIC; исполняемая программа
PAN6W4.EXE; четыре текстовых файла: a1.txt, a2.txt, a3.txt, a4.txt, в которых записаны 4 группы смитов с вычетом 4.
Программу можно сразу запускать, всё готово для её работы. На экран выводится только один цикл - по переменной A3. Идти он будет очень медленно, внешним является ещё только один цикл по переменной A2.
Программа работает до первого квадрата; квадрат появится на экране и запишется в файл MK8.txt, после чего программы выйдет в "КОНЕЦ ПРОГРАММЫ".
Ещё раз отмечу: в программе задействован массив из 120 смитов с вычетом 4, это приличный массив, поэтому вполне можно ожидать квадрат. Однако никакой гарантии, что квадрат будет найден.
Интересен такой момент: массив смитов можно увеличить, для этого достаточно в файл a2.txt добавить новые смиты с вычетом 4; конечно, в программе тогда надо изменить значение переменной
, сейчас
. Однако сильно увеличивать не стоит, так как мы собираемся построить квадрат с минимальной константой.
И ещё: три группы смитов, содержащие свободные переменные, можно варьировать. Для этого достаточно записать в файлы a1.txt, a3.txt и a4.txt новые наборы смитов с вычетом 4 (но в тех же количествах: увеличивать количество тоже можно (тогда надо в программе изменить значения переменных
,
,
), но не целесообразно, так как это приведёт к увеличению времени выполнения программы).
Ещё раз повторяю просьбу переписать программу на С++. Вдруг найдётся кто-нибудь, кому делать нечего