diff options
Diffstat (limited to 'libsolve.py')
-rw-r--r-- | libsolve.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libsolve.py b/libsolve.py index 61d7f40..af72264 100644 --- a/libsolve.py +++ b/libsolve.py @@ -267,3 +267,16 @@ class Matrix: row.set_hints(max_hints) return '\n'.join(repr(row) for row in self.rows) + + +class Permutation: + def __init__(self, perm: Iterable): + self.perm = list(perm) + + def apply(self, now: list): + assert len(self.perm) == len(now) + res = [0] * len(self.perm) + for i in range(len(self.perm)): + res[self.perm[i]] = now[i] + + return res |