summaryrefslogtreecommitdiffstats
path: root/libsolve.py
diff options
context:
space:
mode:
Diffstat (limited to 'libsolve.py')
-rw-r--r--libsolve.py13
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