Пример #1
0
 def quasisymmetrize(cls, word, zeta):
     if len(word) == 0:
         return Vector({(): 1})
     ans = defaultdict(int)
     for i in range(1, len(word) + 1):
         pre = word[:i]
         sub = word[i:]
         z = zeta(pre)
         if z != 0:
             for k, v in cls.quasisymmetrize(sub, zeta).items():
                 ans[(i,) + k] += z * v
     ans = Vector({k: v for k, v in ans.items() if v != 0})
     return ans