%%%%%%%%%%%%%%%%%%%%%%%
%                     %
% Eight queens puzzle %
%                     %
%%%%%%%%%%%%%%%%%%%%%%%

:- set_prolog_flag(toplevel_print_options,
                   [quoted(true), portray(true), max_depth(0)]).

:- use_module(search).



queens(L) :-
    solve([], Ls),
    last(Ls, L).

solve(A, B) :-
    depthfirst(A, B).




goal([_,_,_,_,_,_,_,_]).


s(Queens, [Queen|Queens]) :-
    between(1, 8, Queen),
    noattack(Queen, Queens).


noattack(Queen, Queens) :-
    \+ member(Queen, Queens),
    noattackdiag(Queen, 1, Queens).

noattackdiag(_, _, []) :- !.
noattackdiag(Queen, C, [Queen1|Queens]) :-
    Queen =\= Queen1 + C,
    Queen =\= Queen1 - C,
    C2 is C + 1,
    noattackdiag(Queen, C2, Queens).

