clear_check(_, []). clear_check(X/Y, [X1/Y1 | Rest]) :- X =\= X1, Y =\= Y1, abs(Y1-Y) =\= abs(X1-X), clear_check(X/Y, Rest). legal([]). legal([X/Y | Rest]) :- legal(Rest), member(X,[1,2,3,4,5,6,7,8]), member(Y,[1,2,3,4,5,6,7,8]), clear_check(X/Y, Rest). solution(X) :- X = [_,_,_,_,_,_,_,_], legal(X).