puzzle1(Sol):-
	puzzle(L),
	L=[L1,L2,L3,L4,L5],	
	nac(L1,noruegues), /* pistas deterministicas */
	casa(L2,azul),
	beb(L3,leite),
	pistas(L,C),
	questao(L,Q,Sol),
	solve(C),
	solve(Q).
	
solve([]).
solve([C|Cs]):-
	C,
	solve(Cs).

puzzle([[A1,B1,A,B,C],
	[D,D1,D2,E,F],
	[G1,G3,G2,G4,I],
	[J,U1,K,U2,L],
	[L1,M,N,O,P]]).

pistas(L,[(member(L,C1),casa(C1,vermelha),nac(C1,ingles)),
 	(member(L,C2),casa(C2,verde),beb(C2,cafe)),	
	(member(L,C3),casa(C3,amarela),cig(C3,kools)),
	(member(L,C4),beb(C4,laranja),cig(C4,lucky)),
	(member(L,C5),nac(C5,espanhol),ani(C5,cao)),
	(member(L,C6),nac(C6,ucraniano),beb(C6,cha)),
	(member(L,C7),nac(C7,japones),cig(C7,parliaments)),
	(member(L,C8),cig(C8,winston),ani(C8,caracois)),
	(direita(L,L1,L2), casa(L1,marfim),casa(L2,verde)),
	(aolado(L,L3,L4), cig(L3,chesterfields), ani(L4,raposa)),
	(aolado(L,L5,L6), cig(L5,kools), ani(L6,cavalo)),
	(aolado(L,L7,L8), cig(L7,kools), ani(L8,cavalo))]).

questao(L,[member(L,C),nac(C,A),ani(C,zebra),
	member(L,C1), nac(C1,B),beb(C1,agua)],
	[['O dono da zebra e ',A],['Quem prefere agua e ',B]]).


casa([A|_],A).
nac([_,N|_],N).
ani([_,_,A|_],A).
beb([_,_,_,A|_],A).
cig([_,_,_,_,A],A).

direita([L1,L2|R],L1,L2).
direita([_|R],L1,L2):-
	direita(R,L1,L2).

aolado(L,L1,L2):- direita(L,L1,L2); direita(L,L2,L1).

member([A|_],A).
member([_|L],A):-member(L,A).
