예제 #1
0
 def construct(self, zet):
     if isinstance(zet, Intersection):
         return self.common(map(self.construct, zet.args))
     elif isinstance(zet, Union):
         return self.fuse(map(self.construct, zet.args))
     elif isinstance(zet, Complement):
         return self.cut(*map(self.construct, zet.args))
     elif isinstance(zet, Set):
         return self._construct(zet)
     else:
         raise TypeError
예제 #2
0
 def __new__(cls, ops):
     ops = tuple(ops)
     if not all(isinstance(op_i, ContinuousOperation) for op_i in ops):
         raise TypeError
     if len(set(map(thiz.distance, ops))) != 1:
         raise ValueError
     return TensorOperation.__new__(cls, ops)
예제 #3
0
 def partial_fuse(self, col, glues=None, remain=True, err=False):
     if glues is None:
         return (self.fuse(col),)
     targets, remaining = self.divide_into(col, glues, err=err)
     fused = tuple(map(self.fuse, targets))
     if remain:
         fused = fused + tuple(remaining)
     return fused
예제 #4
0
 def simplify(self, col):
     return tuple(filterfalse(self.is_null, map(self.simp, col)))
예제 #5
0
 def partition_by(self, col, *objs):
     knives = zip(objs, map(self.complement, objs))
     return tuple(map(self.common, product(col, *knives)))
예제 #6
0
 def cross_common(self, cols):
     return tuple(map(self.common, product(*map(tuple, cols))))
예제 #7
0
 def no_cross_collision(self, cols):
     return all(map(self.no_collision, product(*map(tuple, cols))))
예제 #8
0
 def __init__(self, acts):
     diss = set(map(self.action_distance, self))
     if len(diss) != 1:
         raise ValueError
     else:
         self._distance = diss.pop()
예제 #9
0
 def transform(self, pzl):
     pzl = pzl.new(map(self.elem_transform, pzl, self))
     if not pzl.ordered:
         pzl = pzl.sort()
     return pzl
예제 #10
0
 def is_valid_operation(self, op):
     return len(self) == len(op) and all(map(self.is_valid_action, op))
예제 #11
0
 def is_valid_state(self):
     return all(map(self.is_valid_elem, self))
예제 #12
0
 def transform(self, pzl):
     return pzl.new(map(thiz.transform, self, pzl))
예제 #13
0
 def is_valid_operation(self, op):
     return (isinstance(op, TensorOperation) and
             len(self) == len(op) and
             all(map(thiz.is_valid_operation, self, op)))
예제 #14
0
 def is_valid_state(self):
     return all(map(thiz.is_valid_state, self))
예제 #15
0
 def __str__(self):
     return "*".join(map(str, self.operations))