/ / Existe-t-il une fonction dans Sage qui applique une permutation à une liste? - python, permutation, sauge

Existe-t-il une fonction dans Sage qui applique une permutation à une liste? - python, permutation, sauge

J'ai le problème suivant dans Sage:

J'ai une collection d'objets de permutation et une collection de listes, chacune de longueur 2. J'espérais qu'il y avait une fonction intégrée pour appliquer une permutation à une liste de la manière suivante, par exemple:

result = (1,2,4)(3,5).apply_to([1,3])
print result
[2,5]

Sinon, des conseils sur la façon d'écrire cette fonction sont appréciés. Je vous remercie!

Réponses:

2 pour la réponse № 1

Semblable à la réponse du protagoniste hiro, mais peut-être plus directe:

sage: a = Permutation("(1,2,4)(3,5)")
sage: result = [a(i) for i in [1,3]]
sage: result
[2, 5]

L'un des points est que les permutations dans Sage peuvent être appelées fonctions, c'est pourquoi la deuxième ligne fonctionne.


1 pour la réponse № 2

vous pouvez essayer ceci en utilisant from_cycles:

sage: from sage.combinat import permutation
sage: perm = permutation.from_cycles(5, ((1,2,4), (3,5)))
sage: perm  # -> [2, 4, 5, 1, 3]
sage: res = [perm[i-1] for i in [1, 3]]
sage: res   # -> [2, 5]

la -1 dans perm[i-1] est nécessaire parce que votre permutation commence à 1 et pas à 0. il existe un moyen plus élégant d'appliquer une permutation à une liste: voir John Palmieri "s réponse.