% nacteni:
/* ['3.2_4.pl']. */
solution(S) :- template(S), sol(S).
sol([]).
sol([X/Y|Others]) :- sol(Others), member(Y,[1,2,3,4,5,6,7,8]),
noattack(X/Y,Others).
noattack(_,[]).
noattack(X/Y,[X1/Y1|Others]) :- X=\=X1, Y=\=Y1, Y1-Y=\=X1-X, Y1-Y=\=X-X1,
noattack(X/Y,Others).
template([1/_Y1,2/_Y2,3/_Y3,4/_Y4,5/_Y5,6/_Y6,7/_Y7,8/_Y8]).
% demonstracni vypis
start:-
write('PROBLEM OSMI DAM II - jeden sloupec pro kazdou damu'),nl,
write('Prvni reseni solution(Solution) - vsimnete si zrychleni oproti verzi I:'),nl,
solution(Solution),write(Solution),nl.
?-start.
PROBLEM OSMI DAM II - jeden sloupec pro kazdou damu
Prvni reseni solution(Solution) - vsimnete si zrychleni oproti verzi I:
[1/4,2/2,3/7,4/3,5/6,6/8,7/5,8/1]
|