In [16]:
import forge
from puzzle.puzzlepedia import puzzlepedia

puzzle = puzzlepedia.parse("""
name in {Beth, Charles, David, Frank, Jessica, Karen}
costume in {Chatwoman, Wish, Stormy, Sparrow, Hunk, Man}
team in {1*3, 2*3}

# NB: Solutions are symmetric for team. Assign Beth arbitrarily.
Beth == 1

{Beth, Karen, Jessica} == {Chatwoman, Wish, Stormy}
{Charles, David, Frank} == {Sparrow, Hunk, Man}

def diff(a, b):
  return all(a[t] != b[t] for t in team)

def same(a, b):
  return all(a[t] == b[t] for t in team)

#1:
diff(Beth, Jessica)

#2:
diff(Charles, David)

#3:
diff(Chatwoman, Hunk)

#4:
diff(Sparrow, Wish)

#5:
diff(Beth, Man)

#6:
Jessica != Wish

#7:
if Beth == Stormy:
  same(Beth, Karen)

#8:
if David == Hunk:
  same(David, Frank)

#9:
if Frank == Sparrow:
  Jessica != Chatwoman

#10:
if Frank != Sparrow:
  Beth != Wish
""")

In [ ]: