... можно написать программку, которая будет строить по двум точным ортогональным покрытиям ассоциативный квадрат. Это должна быть простая программка. Ведь вручную всё делается так просто! Процедура очень занятная
Попробуйте! Правда, очень занимательно. Главное - успех всегда обеспечен!
И программка должна быть красивая.
Кто готов написать красивую программку?
Никто не хочет написать очень простенькую и красивую программку
Пришлось самой написать. Действительно, всё оказалось очень просто.
Вот код программы:
(Оффтоп)
Код:
#COMPILE EXE
#DIM NONE
FUNCTION PBMAIN () AS LONG
LOCAL I,J,K,L AS LONG
DIM A(9,9) AS LONG, B(9,9) AS LONG, C(9,9) AS LONG
OPEN "A31.TXT" FOR INPUT AS #1
FOR I=1 TO 9
FOR J=1 TO 9
INPUT #1,A(I,J)
NEXT J
NEXT I
CLOSE #1
OPEN "A32.TXT" FOR INPUT AS #1
FOR I=1 TO 9
FOR J=1 TO 9
INPUT #1,B(I,J)
NEXT J
NEXT I
CLOSE #1
OPEN "A33.TXT" FOR OUTPUT AS #1
FOR L=1 TO 9
FOR K=1 TO 9
FOR I=1 TO 9
FOR J=1 TO 9
IF A(L,I)=B(K,J) THEN C(L,K)=A(L,I):GOTO 10
NEXT J
NEXT I
PRINT #1,"OSHIBKA!":GOTO 1000
10 NEXT K
NEXT L
FOR I=1 TO 9
FOR J=1 TO 9
PRINT #1,C(I,J);
NEXT J
PRINT #1,
NEXT I
1000 CLOSE #1
END
END FUNCTION
Примерданы два точных ортогональных покрытия массива, цепочки нормализованы:
Код:
23 719 743 1013 1223 1901 1913 2081 2633
29 479 659 1103 1493 1949 2069 2129 2339
59 191 281 389 1109 2459 2549 2591 2621
509 683 911 1151 1433 1439 1559 2153 2411
11 113 179 449 1361 2273 2543 2609 2711
311 569 1163 1283 1289 1571 1811 2039 2213
101 131 173 263 1613 2333 2441 2531 2663
383 593 653 773 1229 1619 2063 2243 2693
89 641 809 821 1499 1709 1979 2003 2699
29 59 101 683 1811 1913 2243 2699 2711
89 389 593 659 1571 2081 2153 2273 2441
113 773 1013 1283 1433 1493 1613 1979 2549
179 311 653 719 1499 1559 2339 2459 2531
131 509 821 1103 1361 1619 1901 2213 2591
191 263 383 1163 1223 2003 2069 2411 2543
173 743 1109 1229 1289 1439 1709 1949 2609
281 449 569 641 1151 2063 2129 2333 2633
11 23 479 809 911 2039 2621 2663 2693
Вводим покрытия в программу и мгновенно получаем следующий ассоциативный квадрат:
Код:
1913 2081 1013 719 1901 1223 743 2633 23
29 659 1493 2339 1103 2069 1949 2129 479
59 389 2549 2459 2591 191 1109 281 2621
683 2153 1433 1559 509 2411 1439 1151 911
2711 2273 113 179 1361 2543 2609 449 11
1811 1571 1283 311 2213 1163 1289 569 2039
101 2441 1613 2531 131 263 173 2333 2663
2243 593 773 653 1619 383 1229 2063 2693
2699 89 1979 1499 821 2003 1709 641 809
,
Как я уже говорила, для двух точных ортогональных покрытий построение ассоциативного квадрата всегда возможно.
Чисто техническая процедура, успех которой всегда обеспечен, если, конечно, данные покрытия действительно точные ортогональные.
Цитата:
Гораздо сложнее будет программа для процедуры построения идеального квадрата из комплекта 4-х точных попарно ортогональных покрытий массива. Да тут ещё и успех вряд ли всегда будет обеспечен. Но пока не утверждаю.
Вот для пандиагональных квадратов 7-го порядка это точно установлено: не из каждого набора 4-х точных попарно ортогональных покрытий массива можно построить пандиагональный квадрат. Найден конкретный пример, доказывающий это утверждение.
Выше приведён комплект из 4-х точных попарно ортогональных покрытий массива (правда это не для искомого минимального квадрата, а для решения с дырками).
Надо написать аналогичную процедуру построения из этих покрытий идеального квадрата. Это сложно (для меня), я пока не знаю, как это сделать. К тому же, тут, скорее всего, квадрат не всегда построится.
Но для приведённого комплекта квадрат построится.
Если при построении ассоцитивного квадрата мы пересекаем только цепочки-строки и цепочки-столбцы, при построении идеального квадрата нам надо пересекать цепочки-строки, цепочки-столбцы, цепочки-диагонали прямые и цепочки-диагонали обратные.