Einstein's Riddle

Kevin Cazabon kevin_cazabon at hotmail.nospamplease!.com
Sun Mar 11 23:50:08 EST 2001


You've obviously got too much time on your hands... q:]



"Brian Harvey" <bh at abbenay.cs.berkeley.edu> wrote in message
news:98h62k$knn$1 at abbenay.CS.Berkeley.EDU...
| "Boris Popov" <no-spam-popov at bigserver.com> writes:
| >house         1 2 3 4 5
| >color            yellow blue red green white
| >nationality   norweigian dane brit german swede
| >drink            water tea milk coffee beer
| >smoke        dunhill blend pall mall prince bluemaster
| >pet              cats horse birds fish dogs
| >
| >P.S. Did I have to write software to solve it ? :)
|
| I can't resist being (apparently) first to post a computer program.
| But it doesn't really belong in any of these newsgroups, because it's
| written in Logo.
|
| First get Berkeley Logo from ftp://ftp.cs.berkeley.edu/ucblogo/
| (pick the one that matches your platform)
|
| Then get the logic-puzzle-solver from
| http://www.cs.berkeley.edu/~bh/logic-code/hybrid.lg
|
| Then here's the part specific to this puzzle:
|
| ? po [einstein neighbor neighbor1]
| to einstein
| cleanup
| category "position [1 2 3 4 5]
| category "color [red green white yellow blue]
| category "nationality [British Swedish Danish Norwegian German]
| category "beverage [tea coffee milk beer water]
| category "cigar [pallmall dunhill blend bluemaster prince]
| category "pet [dog bird cat horse fish]
| verify "British "red
| verify "Swedish "dog
| verify "Danish "tea
| justbefore "green "white :position
| verify "green "coffee
| verify "pallmall "bird
| verify "yellow "dunhill
| verify 3 "milk
| verify 1 "Norwegian
| neighbor "blend "cat :position
| neighbor "horse "dunhill :position
| verify "bluemaster "beer
| verify "German "prince
| neighbor "Norwegian "blue :position
| neighbor "blend "water :position
| print []
| solution
| end
|
| to neighbor :a :b :lineup
| falsify :a :b
| neighbor1 :lineup count :lineup
| end
|
| to neighbor1 :lineup :count
| if :count=0 [stop]
| foreach bl bf bf :lineup [implies :a first :lineup "true :b ? "false]
| neighbor1 (lput first :lineup bf :lineup) :count-1
| end
|
| ? solve [einstein]
| category position [1 2 3 4 5]
| category color [red green white yellow blue]
| category nationality [British Swedish Danish Norwegian German]
| category beverage [tea coffee milk beer water]
| category cigar [pallmall dunhill blend bluemaster prince]
| category pet [dog bird cat horse fish]
| British red -> true
| Swedish red -> false
| Danish red -> false
| Norwegian red -> false
| German red -> false
| green British -> false
| white British -> false
| yellow British -> false
| blue British -> false
| Swedish dog -> true
| British dog -> false
| red dog -> false
| Danish dog -> false
| Norwegian dog -> false
| German dog -> false
| bird Swedish -> false
| cat Swedish -> false
| horse Swedish -> false
| fish Swedish -> false
| Danish tea -> true
| British tea -> false
| red tea -> false
| Swedish tea -> false
| dog tea -> false
| Norwegian tea -> false
| German tea -> false
| coffee Danish -> false
| milk Danish -> false
| beer Danish -> false
| water Danish -> false
| green 5 -> false
| white 1 -> false
| green coffee -> true
| red coffee -> false
| British coffee -> false
| white coffee -> false
| yellow coffee -> false
| blue coffee -> false
| 5 coffee -> false
| tea green -> false
| Danish green -> false
| milk green -> false
| beer green -> false
| water green -> false
| pallmall bird -> true
| dunhill bird -> false
| blend bird -> false
| bluemaster bird -> false
| prince bird -> false
| dog pallmall -> false
| Swedish pallmall -> false
| cat pallmall -> false
| horse pallmall -> false
| fish pallmall -> false
| yellow dunhill -> true
| red dunhill -> false
| British dunhill -> false
| green dunhill -> false
| coffee dunhill -> false
| white dunhill -> false
| blue dunhill -> false
| pallmall yellow -> false
| bird yellow -> false
| blend yellow -> false
| bluemaster yellow -> false
| prince yellow -> false
| 3 milk -> true
| 1 milk -> false
| 2 milk -> false
| 4 milk -> false
| 5 milk -> false
| tea 3 -> false
| Danish 3 -> false
| coffee 3 -> false
| green 3 -> false
| white 4 -> false
| beer 3 -> false
| water 3 -> false
| 1 Norwegian -> true
| 2 Norwegian -> false
| 3 Norwegian -> false
| milk Norwegian -> false
| 4 Norwegian -> false
| 5 Norwegian -> false
| white Norwegian -> false
| British 1 -> false
| red 1 -> false
| Swedish 1 -> false
| dog 1 -> false
| Danish 1 -> false
| tea 1 -> false
| German 1 -> false
| blend cat -> false
| horse dunhill -> false
| yellow horse -> false
| bluemaster beer -> true
| pallmall beer -> false
| bird beer -> false
| dunhill beer -> false
| yellow beer -> false
| blend beer -> false
| prince beer -> false
| tea bluemaster -> false
| Danish bluemaster -> false
| coffee bluemaster -> false
| green bluemaster -> false
| milk bluemaster -> false
| 3 bluemaster -> false
| water bluemaster -> false
| German prince -> true
| British prince -> false
| red prince -> false
| Swedish prince -> false
| dog prince -> false
| Danish prince -> false
| tea prince -> false
| Norwegian prince -> false
| 1 prince -> false
| pallmall German -> false
| bird German -> false
| dunhill German -> false
| yellow German -> false
| blend German -> false
| bluemaster German -> false
| beer German -> false
| Norwegian blue -> false
| 1 blue -> false
| blue 3 -> false
| milk blue -> false
| blue 4 -> false
| blend water -> false
|
|
|   Assuming 1 yellow
|   1 yellow -> true
|   2 yellow -> false
|   dunhill 2 -> false
|   3 yellow -> false
|   milk yellow -> false
|   dunhill milk -> false
|   3 dunhill -> false
|   4 yellow -> false
|   dunhill 4 -> false
|   5 yellow -> false
|   dunhill 5 -> false
|   1 dunhill -> true
|   Norwegian dunhill -> true
|   Swedish dunhill -> false
|   dog dunhill -> false
|   yellow dog -> false
|   Swedish yellow -> false
|   Danish dunhill -> false
|   tea dunhill -> false
|   water dunhill -> true
|   pallmall water -> false
|   bird water -> false
|   prince water -> false
|   German water -> false
|   yellow water -> true
|   red water -> false
|   British water -> false
|   white water -> false
|   blue water -> false
|   Swedish water -> false
|   Norwegian water -> true
|   1 water -> true
|   2 water -> false
|   4 water -> false
|   5 water -> false
|   dog water -> false
|   coffee 1 -> false
|   green 1 -> false
|   Norwegian green -> false
|   yellow Norwegian -> true
|   beer Norwegian -> false
|   bluemaster Norwegian -> false
|   1 bluemaster -> false
|   beer 1 -> false
|   horse Norwegian -> false
|   1 horse -> false
|   water horse -> false
|   blend Norwegian -> false
|   1 blend -> false
|   pallmall Norwegian -> false
|   bird Norwegian -> false
|   1 bird -> false
|   pallmall 1 -> false
|   coffee Norwegian -> false
|   Danish yellow -> false
|   tea yellow -> false
|   white 2 -> false
|   blend 4 -> false
|   blend 3 -> false
|   milk blend -> false
|   horse 4 -> false
|   horse 3 -> false
|   milk horse -> false
|
|     Assuming 5 beer
|     5 beer -> true
|     2 beer -> false
|     bluemaster 2 -> false
|     4 beer -> false
|     bluemaster 4 -> false
|     5 bluemaster -> true
|     pallmall 5 -> false
|     bird 5 -> false
|     blend 5 -> false
|     2 blend -> true
|     white blend -> false
|     pallmall 2 -> false
|     bird 2 -> false
|     prince 2 -> false
|     German 2 -> false
|     cat 2 -> false
|     cat 5 -> false
|     bluemaster cat -> false
|     beer cat -> false
|     cat 4 -> false
|     prince 5 -> false
|     German 5 -> false
|     tea 5 -> false
|     Danish 5 -> false
|
|       Assuming 5 Swedish
|       5 Swedish -> true
|       2 Swedish -> false
|       blend Swedish -> false
|       bluemaster Swedish -> true
|       beer Swedish -> true
|       coffee Swedish -> false
|       green Swedish -> false
|       German green -> true
|       prince green -> true
|       pallmall green -> false
|       bird green -> false
|       coffee bird -> false
|       pallmall coffee -> false
|       blend green -> false
|       2 green -> false
|       4 green -> true
|       cat green -> false
|       coffee cat -> false
|       horse green -> false
|       coffee horse -> false
|       red 4 -> false
|       British 4 -> false
|       coffee 4 -> true
|       tea 4 -> false
|       Danish 4 -> false
|       2 Danish -> true
|       blend Danish -> true
|       pallmall Danish -> false
|       bird Danish -> false
|       British bird -> true
|       red bird -> true
|       white bird -> false
|       pallmall white -> false
|       blue bird -> false
|       pallmall blue -> false
|       red pallmall -> true
|       British pallmall -> true
|       4 pallmall -> false
|       3 pallmall -> true
|       milk pallmall -> true
|       tea pallmall -> false
|       blend tea -> true
|       2 tea -> true
|       cat tea -> false
|       Danish cat -> false
|       bird tea -> false
|       milk bird -> true
|       3 bird -> true
|       4 bird -> false
|       dog 3 -> false
|       Swedish 3 -> false
|       milk Swedish -> false
|       dog milk -> false
|       cat 3 -> false
|       1 cat -> true
|       yellow cat -> true
|       red cat -> false
|       British cat -> false
|       white cat -> false
|       blue cat -> false
|       water cat -> true
|       milk cat -> false
|       Norwegian cat -> true
|       German cat -> false
|       prince cat -> false
|       dunhill cat -> true
|       fish dunhill -> false
|       1 fish -> false
|       yellow fish -> false
|       water fish -> false
|       Norwegian fish -> false
|       fish 3 -> false
|       milk fish -> false
|       white 3 -> false
|       red 3 -> true
|       British 3 -> true
|       German 3 -> false
|       prince 3 -> false
|       4 prince -> true
|       horse prince -> false
|       fish prince -> true
|       milk prince -> false
|       coffee prince -> true
|       blue prince -> false
|       German blue -> false
|       white prince -> false
|       bluemaster white -> true
|       5 white -> true
|       beer white -> true
|       tea white -> false
|       Danish white -> false
|       blue Danish -> true
|       Swedish blue -> false
|       dog blue -> false
|       white Swedish -> true
|       4 Swedish -> false
|       German 4 -> true
|       dog 4 -> false
|       fish 4 -> true
|       2 fish -> false
|       blend fish -> false
|       5 fish -> false
|       beer fish -> false
|       bluemaster fish -> false
|       green fish -> true
|       red fish -> false
|       British fish -> false
|       white fish -> false
|       blue fish -> false
|       Danish fish -> false
|       German fish -> true
|       tea fish -> false
|       coffee fish -> true
|       dog coffee -> false
|       beer dog -> true
|       5 dog -> true
|       2 dog -> false
|       blend dog -> false
|       bluemaster dog -> true
|       green dog -> false
|       white dog -> true
|       horse white -> false
|       milk white -> false
|       red milk -> true
|       British milk -> true
|       German milk -> false
|       coffee German -> true
|       horse German -> false
|       white German -> false
|       2 coffee -> false
|       blend coffee -> false
|       beer British -> false
|       5 British -> false
|       bluemaster British -> false
|       red bluemaster -> false
|       5 red -> false
|       beer red -> false
|       horse British -> false
|       Danish horse -> true
|       tea horse -> true
|       beer horse -> false
|       5 horse -> false
|       2 horse -> true
|       blend horse -> true
|       bluemaster horse -> false
|       British blend -> false
|       red blend -> false
|       blue blend -> true
|       bluemaster blue -> false
|       5 blue -> false
|       2 blue -> true
|       beer blue -> false
|       tea blue -> true
|       red 2 -> false
|       British 2 -> false
|       horse blue -> true
|       red horse -> false
|
| 1 yellow Norwegian water dunhill cat
| 2 blue Danish tea blend horse
| 3 red British milk pallmall bird
| 4 green German coffee prince fish
| 5 white Swedish beer bluemaster dog





More information about the Python-list mailing list