|
1 | 1 | """CSP (Constraint Satisfaction Problems) problems and solvers. (Chapter 6).""" |
2 | 2 |
|
3 | | -from utils import count, first, every, argmin_random_tie |
| 3 | +from utils import count, first, argmin_random_tie |
4 | 4 | import search |
5 | 5 |
|
6 | 6 | from collections import defaultdict |
@@ -98,16 +98,16 @@ def actions(self, state): |
98 | 98 | return [(var, val) for val in self.domains[var] |
99 | 99 | if self.nconflicts(var, val, assignment) == 0] |
100 | 100 |
|
101 | | - def result(self, state, xxx_todo_changeme): |
| 101 | + def result(self, state, action): |
102 | 102 | "Perform an action and return the new state." |
103 | | - (var, val) = xxx_todo_changeme |
| 103 | + (var, val) = action |
104 | 104 | return state + ((var, val),) |
105 | 105 |
|
106 | 106 | def goal_test(self, state): |
107 | 107 | "The goal is to assign all variables, with all constraints satisfied." |
108 | 108 | assignment = dict(state) |
109 | 109 | return (len(assignment) == len(self.variables) and |
110 | | - every(lambda variables: self.nconflicts(variables, assignment[variables], assignment) == 0, self.variables)) |
| 110 | + all(self.nconflicts(variables, assignment[variables], assignment) == 0 for variables in self.variables)) |
111 | 111 |
|
112 | 112 | # These are for constraint propagation |
113 | 113 |
|
@@ -177,8 +177,7 @@ def revise(csp, Xi, Xj, removals): |
177 | 177 | revised = False |
178 | 178 | for x in csp.curr_domains[Xi][:]: |
179 | 179 | # If Xi=x conflicts with Xj=y for every possible y, eliminate Xi=x |
180 | | - if every(lambda y: not csp.constraints(Xi, x, Xj, y), |
181 | | - csp.curr_domains[Xj]): |
| 180 | + if all(not csp.constraints(Xi, x, Xj, y) for y in csp.curr_domains[Xj]): |
182 | 181 | csp.prune(Xi, x, removals) |
183 | 182 | revised = True |
184 | 183 | return revised |
|
0 commit comments