diff options
-rw-r--r-- | statemachine.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/statemachine.py b/statemachine.py index 9c943e1..5cdbadf 100644 --- a/statemachine.py +++ b/statemachine.py @@ -33,6 +33,17 @@ class StateMachine: if found == None: self.add_hold(cat) return True + to_add = self.cat_cross(found) + for x in to_add: + self.add_hold(x) + return True + + def cat_cross(self, found): + """ + Given a list of sets, where each set contains Category objects, return a + set of all categories that can be made by intersecting one element from + each set. + """ to_add = set() for tup in setcross.cross(*found): orig = tup @@ -45,9 +56,7 @@ class StateMachine: if len(tup) == 0 or tup[0] == None: continue to_add.add(tup[0]) - for x in to_add: - self.add_hold(x) - return True + return to_add def intersect_list(self, cats1, cats2): """ |