/* Five house puzzle in Picat. From SICStus Prolog model five.pl """ Benchmark (Finite Domain) INRIA Rocquencourt - ChLoE Project Name : five.pl Title : five house puzzle Original Source: P. Van Hentenryck's book Adapted by : Daniel Diaz - INRIA France Date : September 1992 A logic puzzle Solution: [N1,N2,N3,N4,N5, [3,4,5,2,1, C1,C2,C3,C4,C5, 5,3,1,2,4, P1,P2,P3,P4,P5, 5,1,4,2,3, A1,A2,A3,A4,A5, 4,5,1,3,2, D1,D2,D3,D4,D5] 4,1,2,5,3] """ This is a variant of the Zebra/Einstein puzzle: N: Nationalities? C: Color? P: Profession? A: Animal? D: Drinks? This model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import util. import cp. main => go. go ?=> five_house([],L), foreach(LL in chunks_of(L,5)) println(LL) end, nl. go => true. % From SICStus Prolog model five.pl five_house(Lab,L):- L=[N1,N2,N3,N4,N5, C1,C2,C3,C4,C5, P1,P2,P3,P4,P5, A1,A2,A3,A4,A5, D1,D2,D3,D4,D5], % domain(L, 1, 5), L :: 1..5, N5 #= 1, D5 #= 3, N1 #= C2, N2 #= A1, N3 #= P1, N4 #= D3, P3 #= D1, C1 #= D4, P5 #= A4, P2 #= C3, C1 #= C5+1, all_different([C1,C2,C3,C4,C5]), all_different([P1,P2,P3,P4,P5]), all_different([N1,N2,N3,N4,N5]), all_different([A1,A2,A3,A4,A5]), all_different([D1,D2,D3,D4,D5]), abs(A3-P4) #= 1, abs(A5-P2) #= 1, abs(N5-C4) #= 1, solve(Lab, L).