Einstein's Riddle

Yoann Padioleau padiolea at merlin.irisa.fr
Tue Mar 13 15:28:25 EST 2001


"Steve Graham" <js.graham at home.com> writes:

> Who would be interested in using his/her brain (and his computer) to solve
> the following?
here it is:

%----------------------------------------------------------------
% a sicstus program
:- use_module(library(clpfd)).                                                                                            

relation(Unknown) :-
	Unknown =
	[[Color1, Nationality1, Drink1, Smoke1, Pet1]
	,[Color2, Nationality2, Drink2, Smoke2, Pet2]
	,[Color3, Nationality3, Drink3, Smoke3, Pet3]
	,[Color4, Nationality4, Drink4, Smoke4, Pet4]
	,[Color5, Nationality5, Drink5, Smoke5, Pet5]
	]
	, Colors =        [Color1, Color2, Color3, Color4, Color5]
	, Nationalities = [Nationality1, Nationality2, Nationality3, Nationality4, Nationality5]
	, Drinks =        [Drink1, Drink2, Drink3, Drink4, Drink5]
	, Smokes =        [Smoke1, Smoke2, Smoke3, Smoke4, Smoke5]
	, Pets   =        [Pet1, Pet2, Pet3, Pet4, Pet5],
			
	Red = 1, Green = 2, Yellow = 3, Blue = 4, White = 5,
	Brit = 1, Sweed = 2, Dane = 3, Norvegian = 4, German = 5,
	Tea = 1, Coffee = 2, Milk = 3, Beer = 4, Water = 5,
	Pall_mall = 1, Dunhill = 2, Blends = 3, Bluemaster = 4, Prince = 5,
	Dogs = 1, Birds = 2, Cats = 3, Fish = 4, Horse = 5,

	domain([Color1, Nationality1, Drink1, Smoke1, Pet1
	       ,Color2, Nationality2, Drink2, Smoke2, Pet2
	       ,Color3, Nationality3, Drink3, Smoke3, Pet3
	       ,Color4, Nationality4, Drink4, Smoke4, Pet4
	       ,Color5, Nationality5, Drink5, Smoke5, Pet5], 1, 5)
	, all_different(Colors)
	, all_different(Nationalities)
	, all_different(Drinks)
	, all_different(Smokes)
	, all_different(Pets)
	,

% cant do the member, cos member need instantiated things!! and if enum and then test member
%  we gain nothing cos always big search space, the labeling must be at the end !!

	 A1 in 1..5, element(A1, Nationalities, Brit),  element(A1,Colors,Red),
	 A2 in 1..5, element(A2, Nationalities, Sweed), element(A2,Pets, Dogs),
	 A3 in 1..5, element(A3, Nationalities, Dane),  element(A3,Drinks, Tea),
	 A4 in 1..5, element(A4, Colors,        Green),
	 A5 in 1..5, A5 #= A4+1, element(A5, Colors, White),
	 A6 in 1..5, element(A6, Colors, Green),        element(A6, Drinks, Coffee),
	 A7 in 1..5, element(A7, Smokes, Pall_mall),    element(A7, Pets,  Birds),
	 A8 in 1..5, element(A8, Colors, Yellow),       element(A8, Smokes, Dunhill),
	 element(3, Drinks, Milk),
	 element(1, Nationalities, Norvegian),
	 A9 in 1..5, element(A9, Smokes, Blends),
	 A10 in 1..5, ((A10 #= A9-1) #\/ (A10 #= A9+1)), element(A10, Pets, Cats),
	 A11 in 1..5, element(A11, Pets, Horse),
	 A12 in 1..5 , ((A12 #= A11-1) #\/ (A12 #= A11+1)), element(A12, Smokes, Dunhill),
	 A13 in 1..5, element(A13, Smokes, Bluemaster),  element(A13, Drinks, Beer),
	 A14 in 1..5, element(A14, Nationalities, German), element(A14, Smokes, Prince),
	 A15 in 1..5, element(A15, Nationalities, Norvegian),
	 A16 in 1..5 , ((A16 #= A15-1) #\/ (A16 #= A15+1)), element(A16, Colors, Blue),
	 A17 in 1..5, element(A17, Smokes, Blends),
	 A18 in 1..5 , ((A18 #= A17-1) #\/ (A18 #= A17+1)), element(A18, Drinks, Water),
	
	labeling([],
		 [Color1, Nationality1, Drink1, Smoke1, Pet1
		 ,Color2, Nationality2, Drink2, Smoke2, Pet2
		 ,Color3, Nationality3, Drink3, Smoke3, Pet3
		 ,Color4, Nationality4, Drink4, Smoke4, Pet4
		 ,Color5, Nationality5, Drink5, Smoke5, Pet5
		 , A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18
		 ]).
		
%relation(X).
%  X = [[3,4,5,2,3],[4,3,1,3,5],[1,1,3,1,2],[2,5,2,5,4],[5,2,4,4,1]] ? ; corresponding to
%  [Yellow, Norvegian, Water, Dunhill, Cats]
%  [Blue,   Dane,       Tea,  Blends, Horse]
%  [Red,    Brit,      Milk,  Pall_mall, Birds]
%  [Green,  German,  Coffee,  Prince,    Fish]
%  [White,  Sweed,   Beer,  Bluemaster,  Dogs]

%----------------------------------------------------------------


> 
> 
> Steve Graham
> 
> ===
> 
> Einstein's Riddle
> 
> Albert Einstein wrote this riddle this century [ed. 20th century].  He said
> 98% of the world could not solve it.
> 
> There are 5 houses in 5 different colors.  In each house lives a person with
> a different nationality.  The 5 owners drink a certain type of beverage,
> smoke a certain brand of cigar, and keep a certain pet.  No owners
> have the same pet, smoke the same brand of cigar or drink the same beverage.
> 
> The question is: "Who owns the fish?"
> 
> Hints:
> 
> The Brit lives in the red house.
> 
> The Sweed keeps dogs as pets.
> 
> The Dane drinks tea.
> 
> The green house is on the left of the white house.
> 
> The green house's owner drinks coffee.
> 
> The person who smokes Pall Mall rears birds.
> 
> The owner of the yellow house smokes Dunhill.
> 
> The man living in the center house drinks milk.
> 
> The Norwegian lives in the first house.
> 
> The man who smokes Blends lives next to the one who keeps cats.
> 
> The man who keeps the horse lives next to the man who smokes Dunhill.
> 
> The owner who smokes Bluemasters drinks beer.
> 
> The German smokes Prince.
> 
> The Norwegian lives next to the blue house.
> 
> The man who smokes Blends has a neighbor who drinks water.
> 
> 
> 
> 
> 
> 
> 
> 
> 

-- 
Yoann  Padioleau,  INSA de Rennes, France,   http://www.irisa.fr/prive/padiolea
Opinions expressed here are only mine. Je n'écris qu'à titre personnel.
**____   Get Free. Be Smart.  Simply use Linux and Free Software.   ____**



More information about the Python-list mailing list