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

puzzle = puzzlepedia.parse("""
place in range(1, 7 + 1)
name in {Beth, Charles, David, Frank, Jessica, Karen, Taylor}
country in {AustriaHungary, England, France, Germany, Italy, Russia, Turkey}

def gap(a, n, b):
  return all(a[i] == b[i + n] for i in range(1, 7 - n + 1))

#1: Russia did better than Germany did better than Turkey.
Russia.place < Germany.place < Turkey.place

#2:
AustriaHungary.place < England.place < France.place < Italy.place

#3:
Beth.place < David.place < Karen.place < Charles.place

#4:
Frank.place < Taylor.place < Jessica.place

#5:
gap(David, 2, Italy)
gap(Russia, 2, David)

#6:
gap(England, 2, Karen)
gap(Frank, 2, England)

#7a: Germany is not 1st or 2nd...
not Germany[1]
not Germany[2]
#7b: ... +/- 1 from Taylor.
gap(Germany, 1, Taylor) or gap(Taylor, 1, Germany)

#8:
Jessica != Turkey
""")

In [ ]: