Уф! Что-то у меня сегодня программа не сразу получилась. А всё потому, что лень было писать заново и стала изменять старую программу, приспосабливая её к поиску по шаблону. Ну и вот: сколько раз убеждалась, что лучше написать программу с чистого листа, чем вносить изменения в старую программу.
Итак, программа искала по заданному точному покрытию массива (задано шаблоном) второе точное покрытие ортогональное заданному (тоже по шаблону):
Код:
#1
1 1 3 4 4 4 4 4 4
1 3 3 3 3 4 4 4 4
1 1 1 1 1 3 3 4 4
1 3 3 3 3 4 4 4 4
1 1 1 3 3 3 4 4 4
1 3 3 3 3 4 4 4 4
1 1 1 1 1 3 3 4 4
1 3 3 3 3 4 4 4 4
1 1 3 3 3 3 3 3 4
#2
1 3 3 3 3 4 4 4 4
1 1 1 1 4 4 4 4 4
1 1 3 4 4 4 4 4 4
1 1 1 3 3 3 4 4 4
1 3 3 3 3 4 4 4 4
1 1 1 3 3 3 4 4 4
1 1 3 3 3 3 3 3 4
1 1 1 1 3 3 3 3 3
1 3 3 3 3 4 4 4 4
Решение (показываю оба покрытия):
Код:
#1
2699 281 809 1499 479 2633 389 911 2549
59 1571 2129 1493 2339 659 1613 2273 113
2591 1289 1901 191 1013 11 2693 101 2459
683 2069 1559 2411 2003 1439 773 743 569
1619 179 641 509 1361 2213 2081 2543 1103
2153 1979 1949 1283 719 311 1163 653 2039
263 2621 29 2711 1709 2531 821 1433 131
2609 449 1109 2063 383 1229 593 1151 2663
173 1811 2333 89 2243 1223 1913 2441 23
#2
11 23 113 2213 2663 1499 1709 1949 2069
101 131 641 2441 449 1559 2039 2339 2549
311 1811 1433 569 809 1109 1619 2129 2459
191 821 1151 1493 2243 2543 389 1439 1979
29 89 659 719 1361 2003 2063 2633 2693
2531 1901 1571 1229 479 179 2333 1283 743
2411 911 1289 2153 1913 1613 1103 593 263
2621 2591 2081 281 2273 1163 683 383 173
2711 2699 2609 509 59 1223 1013 773 653
Надеюсь, что теперь всё правильно, тщательно не проверяла.
Второе покрытие нашлось быстро, примерно минут 5 (ну, вообще-то в свете обозначенных выше 10 секунд на проверку всей модели комплекта это безобразно долго
).
Завтра уже буду делать программу поиска третьего покрытия ортогонального каждому из этих двух.
У меня, как уже говорила, на каждый этап отдельная программа. А по-хорошему надо делать одну программу, причём так, чтобы работала она очень быстро.