def representative_n(mu): shape = {(i, j): (i, min(j, mu[i - 1] + 1 - j)) if j != (mu[i - 1] + 1 - j) else (2 * ((i + 1) // 2), j) for (i, j) in Partition.shape(mu)} word = [ shape[key] for key in sorted(shape, key=lambda ij: (ij[1], -ij[0])) ] pairs = defaultdict(list) for i, key in enumerate(word): pairs[key].append(i + 1) w = Permutation() for pair in pairs.values(): i, j = tuple(pair) w *= Permutation.transposition(i, j) return w
def anti_representative_m(mu): t = Tableau( {box: i + 1 for i, box in enumerate(sorted(Partition.shape(mu)))}) oneline, _ = InsertionAlgorithm.inverse_hecke(t, t) return Permutation(*oneline)