:- use_module(library(tor_clpfd)).

go1 :- 
  n_queens(95,Vars),
  search(lds(labeling([ff], Vars))).

n_queens(N, Qs) :-
        length(Qs, N),
        Qs ins 1..N,
        safe_queens(Qs).

safe_queens([]).
safe_queens([Q|Qs]) :- safe_queens(Qs, Q, 1), safe_queens(Qs).

safe_queens([], _, _).
safe_queens([Q|Qs], Q0, D0) :-
        Q #\= Q0,
        abs(Q0 - Q) #\= D0,
        D1 #= D0 + 1,
        safe_queens(Qs, Q0, D1).

%?- n_queens(80, Qs), time(search(labeling([ff], Qs))).
%@ % 883,774 inferences, 0.309 CPU in 0.460 seconds (67% CPU, 2860462 Lips)
%@ Qs = [1, 3, 5, 44, 42, 4, 50, 7, 68|...] .
