rvsjoen
public text v1 · immutableclear_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).