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).