Solution to the family puzzle

Submitted by John Kirchmeier jskirchmeier@yahoo.com

  Three men, Abel, Locker and Snyder are married to Edith, Doris and Luisa, but not necessarily in this order.
  Each couple has one son.
  The sons are called Albert, Henry and Victor.
  Snyder is not married to Luisa, neither is he Henry's father.
  Edith is not married to Locker and not Albert's mother.
  If Alberts father is either Locker or Snyder, then Luisa is Victor's mother.
  If Luisa is married to Locker, then Doris is not Albert's mother. 


Instructions to run:

* No dependencies other than Drools 4.0.0 (GA)

Run From Jar:
1) Ensure Drools 4.0.0, and FamilyPuzzle.jar is on classpath
2) execute:  java com.sample.FamilyMain

Final answer is printed to the Console, (by a Rule)

I tired to come up with a solution that simply inserted the possible people (dads, moms, and sons) and 
fired the rules, generating the solution.  By moving some of the creation logic into code a faster solution 
was possible but not as neat.  The creation of the solutions and ensuring no duplicates is messy 
(but hey my combinatorics class was many years ago). 

Output should look something like this (run time does not include rule compilation):
The solution is 
    Father : Locker,  Mother : Doris,  Son : Henry
    Father : Snyder,  Mother : Edith,  Son : Victor
    Father : Abel,  Mother : Luisa,  Son : Albert
Run time (milliseconds): 90
