In [11]:
import forge
from puzzle.puzzlepedia import puzzlepedia
puzzle = puzzlepedia.parse("""
name in {Beth, Charles, David, Frank, Jessica, Karen, Taylor}
occupation in {orn, paleo, radio, seismo, toxic, vulcano, zoo}
horoscope in {Aquarius, Gemini, Libra, Pisces, Scorpio, Taurus, Virgo}
rooms in {Library, Lounge*2, Big, Small, Sitting, Outdoors}
crime in {guilty, innocent*6}
first_floor = [Lounge, Library]
second_floor = [Small, Big, Sitting]
#1: Setup occupation.
#2: Setup horoscopes.
#3a:
Taylor != Pisces
Taylor == Outdoors
{Library, Sitting} == {seismo, Virgo}
Seismo != Virgo
#4:
{toxic, vulcano, zoo} == {Aquarius, Pisces, Scorpio}
#5:
{Charles, Gemini, Taurus} == {Big, Small, Sitting}
{Charles} != {Gemini, Taurus}
#6:
vulcano != sitting
paleo != guilty
#7: First floor is guilty. Second floor isn't.
Lounge.guilty or Library.guilty
#8:
orn != small
taurus != small
#9:
Beth == Lounge
Beth != Libra
Libra == Lounge
Beth != guilty
Libra != guilty
Beth != Aquarius
#10:
paleo != Libra
Jessica != Libra
#11:
David != library
David != Small
David != Outdoors
David != zoo
zoo != Outdoors
David != vulcano
#12:
Frank != vulcano
Beth != vulcano
Taylor != vulcano
#13:
Jessica != Aquarius
Jessica != Virgo
Jessica != Small
Small != Aquarius
Small != Virgo
#14:
Karen != seismo
Karen != vulcano
#15:
radio != Karen
radio != Library
Karen != Library
Taylor != Aquarius
""")
In [ ]: