You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
871 B
31 lines
871 B
# coding: utf-8
|
|
from z3 import *
|
|
|
|
################################# Burglars ##################################
|
|
# create the solver
|
|
solver = Solver()
|
|
|
|
#############################################################################
|
|
# (1) Ed: "Fred did it, and Ted is innocent".
|
|
# (2) Fred: "If Ed is guilty , then so is Ted".
|
|
# (3) Ted: "Im innocent, but at least one of the others is guilty".
|
|
#############################################################################
|
|
|
|
# TODO Create boolean variables for each of the culprits
|
|
# TODO Add constraints to the solver representing the statements from above
|
|
|
|
# Hint: The statement of a culprit should be true if and only if he is not guilty!
|
|
|
|
|
|
|
|
res = solver.check()
|
|
if res != sat:
|
|
print("unsat")
|
|
sys.exit(1)
|
|
|
|
print(solver)
|
|
m = solver.model()
|
|
for d in m.decls():
|
|
print("%s -> %s" % (d, m[d]))
|
|
|
|
print("\n" + str(m))
|