
nalevo([A,B,_,_,_],A,B).
nalevo([_,A,B,_,_],A,B).
nalevo([_,_,A,B,_],A,B).
nalevo([_,_,_,A,B],A,B).

vedle(V,A,B) :- nalevo(V,A,B);nalevo(V,B,A).

vyres_hadanku(V) :-
	V=[
	barak(_,_,_,_,_),
	barak(_,_,_,_,_),
	barak(_,_,_,_,_),
	barak(_,_,_,_,_),
	barak(_,_,_,_,_)],

	%barak(skola,barva,napoj,zvire,jazyk)

	%absolvent ZČU žije v červeném domě,
	member(barak(zcu,cervena,_,_,_),V),
	%absolvent ČVUT chová psa,
	member(barak(cvut,_,_,pes,_),V),
	%absolvent UP pije čaj,
	member(barak(up, _, caj, _,_),V), 
	%absolvent MFF programuje v Prologu,
	member(barak(mff,_,_,_,prolog),V),
	%absolvent MU bydlí v prvním domě,
	V = [barak(mu,_,_,_,_)|_],
	%obyvatel zeleného domu pije biomléko,
	member(barak(_, zelena, biomleko, _, _), V),
	%programátor v Jávě pije pivo,
	member(barak(_,_,pivo,_,java), V),
	%obyvatel žlutého domu programuje v Haskellu,
	member(barak(_,zluta,_,_,haskell), V),
	%programátor v C chová papouška,
	member(barak(_,_,_,papousek,c), V),
	%obyvatel prostředního domu pije kávu,
	V = [_,_,barak(_,_,kava,_,_)|_],
	%programátor v C bydlí vedle chovatele kočky,
	vedle(V,barak(_,_,_,_,c),barak(_,_,_,kocka,_)),
	%chovatel koně bydlí vedle programátora v Haskellu,
	vedle(V,barak(_,_,_,_,haskell),barak(_,_,_,kun,_)),
	%absolvent MU bydlí vedle modrého domu,
	vedle(V,barak(mu,_,_,_,_),barak(_,modra,_,_,_)),
	%programátor v C# má souseda, který pije víno,
	vedle(V,barak(_,_,_,_,cis),barak(_,_,vino,_,_)),
	%zelený dům stojí nalevo od bílého domu,
	nalevo(V, barak(_, zelena, _, _,_), barak(_, bila, _, _, _)),
	%a někde tam je schovaná zbytková zebra
	member(barak(_, _,_, zebra, _), V).


