Цитата(MacTep @ 22.12.2006, 11:51 ) | | Да вот только сделать так, чтобы эта программа заработала кто-нибудь может? |
SWI-Prolog. Программу №1 из Братко немного модифицировал:
| Код | %Ферзь не бьет остальных небьет(_,[]). %Некого бить небьет([X,Y],[[X1,Y1]|Остальные]):- Y\=Y1, %Разные Y-координаты Y1-Y\=X1-X, %Разные диагонали Y1-Y\=X-X1, небьет([X,Y],Остальные).
принадлежит(X,[X|_]). принадлежит(X,[_|L]):- принадлежит(X,L).
решение([]). решение([[X,Y]|Остальные]):- %Первый ферзь на поле [X,Y], %остальные ферзи на полях из списка Остальные решение(Остальные), принадлежит(Y,[1,2,3,4,5,6,7,8]), небьет([X,Y],Остальные).
%Шаблон решения
шаблон([[1,_],[2,_],[3,_],[4,_],[5,_],[6,_],[7,_],[8,_]]).
|
проверка:
| Цитата | ?- шаблон(S),решение(S).
S = [[1, 7], [2, 8], [3, 5], [4, 6], [5, 4], [6, 3], [7, 2], [8, 1]] ;
S = [[1, 5], [2, 8], [3, 7], [4, 6], [5, 4], [6, 3], [7, 2], [8, 1]] ;
S = [[1, 7], [2, 5], [3, 8], [4, 6], [5, 4], [6, 3], [7, 2], [8, 1]] ;
S = [[1, 6], [2, 8], [3, 5], [4, 7], [5, 4], [6, 3], [7, 2], [8, 1]] ;
S = [[1, 6], [2, 5], [3, 8], [4, 7], [5, 4], [6, 3], [7, 2], [8, 1]]
и так далее -- все вырианты выводит (прим. мое - Artemios)
|
|