Hello! Here is a useful class to handle permutations. ----------------------------------------------------------------- class Perm: def __init__(self, size, cycle=None): self.size = size self.data = range(size) if cycle: n = len(cycle) for i in range(n): self.data[cycle[i]] = cycle[(i+1) % n] def __str__(self): return str(self.data) def __mul__(self, other): if self.size != other.size: print "error: different size" return tmp = Perm(self.size) for key in range(tmp.size): tmp.data[key] = self.data[other.data[key]] return tmp def __invert__(self): # ~p tmp = Perm(self.size) for i in range(tmp.size): tmp.data[self.data[i]] = i return tmp ------------------------------------------------------------------------------------- # Exemplary calculations N = 4
E = Perm(N) R1 = Perm(N,(0,1)) * Perm(N,(2,3)) R2 = Perm(N,(0,2)) * Perm(N,(1,3)) R3 = R1 * R2 # {E, R1, R2, R3} form D_2 group H = Perm(N,(0,1,3,2)) print H, ~H, H*(~H) ------------------------------------------------------------------------- Regards, Andrzej Kapanowski
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig