Надо попытаться решить задачу в новой формулировке.
Ну, вот я пытаюсь решить задачу в новой формулировке.
Говорят: выкладывай попытки решения, ну вот выкладываю
Начинала я не с нуля, на форуме nazva.net нашли 30 нужных мне комбинаций, вот они:
Код:
1 2 3 4 5 6
1 3 1 1 1 1
1 4 2 2 2 2
1 5 4 3 3 3
1 6 5 5 4 4
2 1 1 2 3 4
2 3 2 3 4 5
2 4 3 5 6 1
2 5 5 6 5 2
2 6 6 4 1 3
3 1 2 5 5 3
3 2 4 6 1 4
3 4 5 4 3 5
3 5 6 1 2 6
3 6 1 3 6 2
4 1 5 3 1 6
4 2 6 2 4 1
4 3 3 6 2 3
4 5 2 4 6 4
4 6 4 1 5 5
5 1 3 1 4 2
5 2 1 5 2 5
5 3 4 2 6 6
5 4 6 3 5 4
5 6 2 6 3 1
6 1 4 4 2 1
6 2 5 1 6 3
6 3 6 5 3 2
6 4 1 6 4 6
6 5 3 2 1 5
(ссылку на форум давала выше)
Я проверила, эти комбинации действительно непересекающиеся.
Теперь осталось к этим комбинациям добавить ещё 6 штук с таким же свойством (непересекаемость).
Пишу программу, сначала для добавления к этим 30 комбинациям только одной комбинации.
Текст программы (примитивно, я пишу на QBASIC, но это дела не меняет):
(Оффтоп)
#COMPILE EXE
#DIM NONE
FUNCTION PBMAIN () AS LONG
LOCAL I,J,K,N,M,T,J1,J2,J3,J4,J5,J6 AS LONG
N=30:M=6:K=31
DIM A(K,M) AS LONG,B(6) AS LONG
OPEN "A1.TXT" FOR INPUT AS #1
FOR I=1 TO N
FOR J=1 TO M
INPUT #1,A(I,J)
NEXT J
NEXT I
CLOSE #1
OPEN "A2.TXT" FOR OUTPUT AS #1
FOR T=1 TO 6:B(T)=T:NEXT T
FOR J1=1 TO 6
A(31,1)=B(J1)
FOR J2=1 TO 6
A(31,2)=B(J2)
FOR T=1 TO 30
IF A(31,1)=A(T,1) THEN IF A(31,2)=A(T,2) THEN 100
NEXT T
FOR J3=1 TO 6
A(31,3)=B(J3)
FOR T=1 TO 30
IF A(31,3)=A(T,3) THEN IF A(31,1)=A(T,1) THEN 98
NEXT T
FOR T=1 TO 30
IF A(31,3)=A(T,3) THEN IF A(31,2)=A(T,2) THEN 98
NEXT T
FOR J4=1 TO 6
A(31,4)=B(J4)
FOR T=1 TO 30
IF A(31,4)=A(T,4) THEN IF A(31,1)=A(T,1) THEN 96
NEXT T
FOR T=1 TO 30
IF A(31,4)=A(T,4) THEN IF A(31,2)=A(T,2) THEN 96
NEXT T
FOR T=1 TO 30
IF A(31,4)=A(T,4) THEN IF A(31,3)=A(T,3) THEN 96
NEXT T
FOR J5=1 TO 6
A(31,5)=B(J5)
FOR T=1 TO 30
IF A(31,5)=A(T,5) THEN IF A(31,1)=A(T,1) THEN 94
NEXT T
FOR T=1 TO 30
IF A(31,5)=A(T,5) THEN IF A(31,2)=A(T,2) THEN 94
NEXT T
FOR T=1 TO 30
IF A(31,5)=A(T,5) THEN IF A(31,3)=A(T,3) THEN 94
NEXT T
FOR T=1 TO 30
IF A(31,5)=A(T,5) THEN IF A(31,4)=A(T,4) THEN 94
NEXT T
FOR J6=1 TO 6
A(31,6)=B(J6)
FOR T=1 TO 30
IF A(31,6)=A(T,6) THEN IF A(31,1)=A(T,1) THEN 92
NEXT T
FOR T=1 TO 30
IF A(31,6)=A(T,6) THEN IF A(31,2)=A(T,2) THEN 92
NEXT T
FOR T=1 TO 30
IF A(31,6)=A(T,6) THEN IF A(31,3)=A(T,3) THEN 92
NEXT T
FOR T=1 TO 30
IF A(31,6)=A(T,6) THEN IF A(31,4)=A(T,4) THEN 92
NEXT T
FOR T=1 TO 30
IF A(31,6)=A(T,6) THEN IF A(31,5)=A(T,5) THEN 92
NEXT T
90 FOR T=1 TO 6:PRINT #1,A(31,T);:NEXT T
GOTO 500
92 NEXT J6
94 NEXT J5
96 NEXT J4
98 NEXT J3
100 NEXT J2
110 NEXT J1
500 END
END FUNCTION
Выполняю программу, она выдаёт такую 31-ую комбинацию:
Код:
1 1 6 6 6 5
Вроде всё правильно, комбинация удовлетворяет требуемому свойству.
Мне осталось найти ещё 5 комбинаций.
Черепашьими шагами буду двигаться. Авось дойду до конца
Асы программирования только рассуждают о том, что теоретически программу можно написать, но зачем оно нужно
-- Вс июн 10, 2012 09:17:01 --Немного изменила программку, и теперь она пригодна для поиска 32-ой комбинации.
И вот тут облом, 32-ая комбинация не формируется!
Программа выдаёт только первые два числа в этой комбинации, третье число добавить уже невозможно.
Значит, нужно изменять первые 30 комбинаций.
То есть по-хорошему надо писать одну программу на поиск всех 36 комбинаций. Но в такой программе я уже запутываюсь.
Как я понимаю, желающих помочь нет.
Я же выложила попытки решения