[rules-users] Can I solve the 'Zebra Puzzle' in drools?

FrankVhh frank.vanhoenshoven at agserv.eu
Wed Jun 15 11:00:27 EDT 2011


Hi,

Just a last quick reply before getting stuck in a traffic jam.

As said, I haven't had a real good look at the rules, but imo they might be
able to work when you feed the engine an initial solution. I.e. insert five
house objects into working memory with a random assignment of the
"attributes". The engine could then re-arrange the objects until all
constraints are satisfied.

But again, I am not really certain about these statements, but it is an
interesting topic to think about...

Regards,
Frank 



Wolfgang Laun-2 wrote:
> 
> This puzzle can be solved using forward chaining, i.e., by using Drools or
> any similar RBS, but it isn't possible by implementing the givens as
> rules,
> expecting that an increase in the filled-in values will result in a (the)
> solution. Certainly, it is possible to write a rule such as
> 
> rule EnglishRed
> when
>     $h: House( nationality == null && colour == Colour.RED ||
>                nationality == Nationality.ENGLISHMAN && colour == null )
> then
>     modify( $h ){
>         setNationality( Nationality.ENGLISHMAN ),
>         setColour( Colour.RED )
>     }
> end
> 
> which adds "red" or "Englishman" to a House as soon as the other property
> is
> present. But this approach comes to a standstill as soon as more
> sophisticated mental processes are required in the manual solution
> technique.
> 
> One approach I've tried successfully is to generate all permutations of
> animals, colours, drinks, nationalities and smokes (120 each), insert them
> as facts, and to write one big rule according to the givens. A similar
> approach uses facts consisting of an attribute indication (animal,...
> smoke), a value and a reference to a House, again starting with all
> possible
> associations and using one rule to select the attribute combinations
> satisfying the givens.
> 
> I'm not quite sure how the rules presented by Miles should work, but I
> don't
> think that swapping values between House facts is going to work, even when
> more defensive strategies against looping are employed.
> 
> -W
> 
> 
> 
> 
> 
> 
> 
> On 15 June 2011 14:47, FrankVhh <frank.vanhoenshoven at agserv.eu>
> wrote:
> 
>> Hi,
>>
>> This is a puzzling one... but then again, I believe that is the idea.
>>
>> I should have a very close look at it, but a loop always suggests that
>> there
>> are rules that re-activate themselves or eachother.
>>
>> For example:
>>
>> rule "抽kools牌的香烟的人与养马的人是邻居"
>>    when
>>        $h1:House(cigarette == Cigarette.kools)
>>        $h2:House(pet == Pet.horse)
>>        $h3:House(eval(position - $h2.position == 1) || eval(position -
>> $h2.position == -1))
>>        eval($h1.position - $h2.position != 1 && $h1.position -
>> $h2.position
>> != -1)
>>    then
>>        System.out.println("抽kools牌的香烟的人与养马(horse)的人是邻居");
>>        modify($h1){setCigarette($h3.cigarette)};
>>        modify($h3){setCigarette(Cigarette.kools)};
>> end
>>
>> In this rule, $h3 and $h1 might be the same house OR $h1 and $h2 might be
>> the same house. I think you need to add extra constraints to make sure
>> that
>> all 3 houses are different.
>>
>> But still, I haven't had a thorough look at all the rules neither did I
>> refresh my knowledge of the zebrapuzzle, so I am not sure whether this is
>> a
>> complete answer (if any).
>>
>> Please let us know.
>>
>> Regards,
>> Frank
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/rules-users-Can-I-solve-the-Zebra-Puzzle-in-drools-tp3066485p3067138.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 


--
View this message in context: http://drools.46999.n3.nabble.com/rules-users-Can-I-solve-the-Zebra-Puzzle-in-drools-tp3066485p3067695.html
Sent from the Drools: User forum mailing list archive at Nabble.com.




More information about the rules-users mailing list