:- use_module(library(tor_clpfd)). go1 :- allinterval(Vars), search(labeling([ff], Vars)). allinterval(Vars) :- N = 9, N1 is N+1, length(Vars,N1), Vars ins 0..N, all_different(Vars), allinterval_differences(Vars,Diffs), all_different(Diffs). allinterval_differences([_],[]) :- !. allinterval_differences([X,Y|Zs],[D|Ds]) :- D #= abs(X - Y), allinterval_differences([Y|Zs],Ds).