N queens in Prolog
Below the N Queens problem solved in Prolog and Constraint Logic Programming over Finite Domains library :- use_module(library(clpfd)). n_queens(N, Queens) :- length(Queens, N), Queens ins 1..N, all_different(Queens), %% the queens must be in different columns different_diagonals(Queens). different_diagonals([]). different_diagonals([Q|Queens]) :- different_diagonals(Queens, Q, 1), different_diagonals(Queens). different_diagonals([], _, _). different_diagonals([Q|Queens], Q0, Distance) :- abs(Q0 - Q) #\= Distance, NewDistance #= Distance + 1, different_diagonals(Queens, Q0, NewDistance). /* Queens is the list of columns of the queens: the corresponding rows are the position of the elements/columns in the list Queens Examples: ?...