diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2014-02-21 12:33:37 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2014-02-21 12:33:37 (GMT) |
commit | d48da5dbad4f47d2aa6403ba13a8ca72fce5297f (patch) | |
tree | 3033b28564f8818bd648e8b455a1a65d76d6fc8b /sugar_network/toolkit/sat.py | |
parent | 4a1136a6e50294aad1eb0c38c4344c88f2ff72c2 (diff) |
Implement context solver on node level
Diffstat (limited to 'sugar_network/toolkit/sat.py')
-rw-r--r-- | sugar_network/toolkit/sat.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sugar_network/toolkit/sat.py b/sugar_network/toolkit/sat.py index a908dd7..65afdaf 100644 --- a/sugar_network/toolkit/sat.py +++ b/sugar_network/toolkit/sat.py @@ -35,7 +35,7 @@ from sugar_network.toolkit import enforce _logger = logging.getLogger('sat') -def solve(clauses, at_most_one_clauses, decide): +def solve(clauses, at_most_one_clauses): if not clauses: _logger.info('No clauses') return None @@ -55,7 +55,15 @@ def solve(clauses, at_most_one_clauses, decide): for name, clause in at_most_one_clauses.items(): clauses[name] = problem.at_most_one(clause) - if not problem.run_solver(lambda: decide(clauses)): + def decide(): + for clause in clauses.values(): + if clause.current is not None: + continue + v = clause.best_undecided() + if v is not None: + return v + + if not problem.run_solver(decide): return None result = {} |