zebre([anglais=Ang, norvegien=Nor,
espagnol=Esp, ukrainien=Ukr, japonais=Jap,
bleu=Ble, rouge=Rou, vert=Ver,
jaune=Jau, blanc=Bla,
cafe=Caf, the=The,
eau=Eau, vin=Vin,
lait=Lai,
kools=Koo, cravens=Cra, oldgolds=Old, gitanes=Git,
chester=Che,
chien=Chi, escargot=Esc, renard=Ren, cheval=Chev,
zebre=Zeb])
:-
Var = [Ang,Nor,Esp,Ukr,Jap,
Ble,Rou,Ver,Jau,Bla,
Caf,The,Eau,Vin,Lai,
Koo,Cra,Old,Git,Che,
Chi,Esc,Ren,Chev,Zeb],
fd_domain(Var,1,5),
fd_all_different([Ang,Nor,Esp,Ukr,Jap]),
fd_all_different([Ble,Rou,Ver,Jau,Bla]),
fd_all_different([Caf,The,Eau,Vin,Lai]),
fd_all_different([Koo,Cra,Old,Git,Che]),
fd_all_different([Chi,Esc,Ren,Chev,Zeb]),
Nor #= 1,
/* Le norvégien habite la première maison */
Ble #= Nor+1,
/* La maison à coté de celle du norvégien est bleue
*/
Lai #= 3,
/* L'habitant de la troisième maison boit du lait */
Ang #= Rou,
/* L'anglais habite la maison rouge */
Ver #= Caf,
/* L'habitant de la maison verte boit du café */
Jau #= Koo,
/* L'habitant de la maison jaune fume des kools */
Bla #= Ver+1,
/* La maison blanche se trouve juste après la verte */
Esp #= Chi,
/* L'espagnol a un chien */
Ukr #= The,
/* L'ukrainien boit du thé */
Jap #= Cra,
/* Le japonais fume des cravens */
Old #= Esc,
/* Le fumeur de old golds a un escargot */
Git #= Vin,
/* Le fumeur de gitanes boit du vin */
(Che#=Ren+1) #\/
(Che#=Ren-1), /* Le voisin du fumeur de Chesterfields a un renard */
(Koo#=Chev+1) #\/
(Koo#=Chev-1),/* Le voisin du fumeur de kools a un cheval */
fd_labeling(Var).