voisins(1,7).
voisins(1,10).
voisins(1,9).
voisins(1,11).
voisins(1,12).
voisins(1,13).
voisins(2,8).
voisins(2,12).
voisins(2,14).
voisins(3,14).
voisins(3,7).
voisins(3,10).
voisins(4,14).
voisins(4,9).
voisins(4,11).
voisins(5,11).
voisins(5,12).
voisins(5,8).
voisins(6,7).
voisins(6,14).
voisins(6,13).
voisins(7,13).
voisins(7,10).
voisins(7,14).
voisins(8,12).
voisins(9,10).
voisins(9,11).
voisins(10,14).
voisins(11,12).
voisins(12,13).
voisins(12,14).
voisins(13,14).

carte(L,Options) :-
        length(L,14),
        fd_domain(L,1,4),
        poseContraintes(1,L),
        fd_labeling(L,Options).

poseContraintes(_,[]).
poseContraintes(I,[XI|L]) :-
        findall(J,voisins(I,J),Lvoisins),
        poseContraintes(I,XI,Lvoisins,L),
        Iplus1 is I+1,
        poseContraintes(Iplus1,L).

poseContraintes(_,_,[],_).
poseContraintes(I,XI,[J|Lvoisins],L) :-
        JmoinsI is J-I,
        nth(JmoinsI,L,XJ),
        XI #\= XJ,
        poseContraintes(I,XI,Lvoisins,L).