def solve(problem): "Return a satisfying assignment for problem, or None if impossible." variables = sat.problem_variables(problem) for env in gen_assignments(variables): if sat.seems_consistent(problem, env): return env return None
def solving(problem, env, variables): "Try to extend a consistent assignment for problem to a satisfying one." if not sat.seems_consistent(problem, env): return None if not variables: return env v, variables = variables[0], variables[1:] for value in (False, True): result = solving(problem, assign(v, value, env), variables) if result is not None: return result return None