Problema celor 8 dame

Cerință:

Se dau N dame și o tablă de șah de dimensiune NxN. Să se găsească toate modalitățile de a aranja toate damele astfel încât oricare două dame să nu se atace. Două dame se atacă dacă se află pe aceeași linie, coloană sau diagonală.

prolog_logo
Cod Sursa PROLOG

 

solutie( [] ).
solutie( [ X/Y | Altele] ) :-
solutie( Altele),
membru( Y, [1,2,3,4,5,6,7,8] ),
nu_ataca( X/Y, Altele).
nu_ataca( _, [] ).
nu_ataca( X/Y, [X1/Y1 | Altele] ):-
Y=\=Y1 ,
Y1-Y =\= X1-X,
Y1-Y =\= X-X1,
Y-Y1 =\=X1-X,
Y-Y1 =\= X-X1,
nu_ataca( X/Y, Altele).
membru( X, [ X|L ] ).
membru( X, [ Y|L ] ):- membru( X, L).
template( [ 1/Y1 , 2/Y2 , 3/Y3 , 4/Y4 ,5/Y5 , 6/Y6 , 7/Y7, 8/Y8 ] ).

Interogări:

patru

Leave a comment