LA TÂCHE
DÉFINITIONS
Considérez les points {1,2,3,4,5} et toutes leurs permutations. On peut trouver le nombre total de permutations possibles de ces 5 points par une simple astuce: Imaging remplissant 5 slots avec ces points, le premier slot aura 5 nombres possibles, le second 4 (comme on a été utilisé pour remplir le premier slot) le troisième 3 et ainsi de suite. Ainsi, le nombre total de permutations est de 5 * 4 * 3 * 2 * 1; ce serait 5! permutations ou 120 permutations. Nous pouvons penser à cela comme le groupe symétrique S5, puis le groupe symétrique Sn aurait des n! or (n*n-1*n-2...*1)
permutations.
Une permutation "paire" est celle où il y a un nombre pair de cycles de longueur paire. Il est plus facile à comprendre lorsqu'il est écrit en notation cyclique, par exemple (1 2 3)(4 5)
permute 1->2->3->1
et 4->5->4
et a un cycle de 3 longueur (1 2 3)
et un cycle 2 de longueur (4 5)
. Lorsque nous classons une permutation comme impaire ou paire, nous ignorons les cycles de longueur impaires et disons que cette permutation [ (1 2 3)(4 5)
] est impaire car elle a un nombre impair {1} de cycles de longueur paire. Même exemples:
(1)(2 3)(4 5)
= deux cycles de 2 longueurs | MÊME |(1 2 3 4 5)
= pas de cycles de longueur pairs | MÊME | * notez que si aucun cycle de longueur paire n'est présent, alors la permutation est paire.
Exemples étranges:
(1 2)(3 4 5)
= un cycle de 2 longueurs | ODD |(1)(2 3 4 5)
= un cycle de 4 longueurs | ODD |
Comme exactement la moitié des permutations dans un groupe symétrique sont paires, nous pouvons appeler le groupe pair le groupe alternatif N, de sorte que S5 = 120 A5 = 60 permutations.
NOTATION
Les permutations doivent, au moins pour cela, être écrites en notation cyclique où chaque cycle est entre parenthèses différentes et chaque cycle va dans l'ordre croissant. Par exemple (1 2 3 4 5)
non (3 4 5 1 2)
. Et pour les cycles avec un seul numéro, tels que: (1)(2 3 4)(5)
les points uniques / fixes peuvent être exclus, ce qui signifie (1)(2 3 4)(5) = (2 3 4)
. Mais l'identité {le point où tous les points sont fixes (1)(2)(3)(4)(5)
} doit être écrite comme ()
juste pour la représenter.
LE DÉFI
J'aimerais que vous, dans le moins de code possible, preniez n'importe quel entier positif comme entrée {1,2,3,4 ...} et affichez toutes les permutations du groupe alternatif An où n est l'entrée / tout le pair permutations de Sn. Par exemple:
Input = 3
()
(1 2 3)
(1 3 2)
et
Input = 4
()
(1 2)(3 4)
(1 3)(2 4)
(1 4)(2 3)
(1 2 3)
(1 3 2)
(1 2 4)
(1 4 2)
(1 3 4)
(1 4 3)
(2 3 4)
(2 4 3)
Et comme dans les exemples, je voudrais que tous les cycles d'une longueur soient élidés et que pour l'identité: sorties de rien,
()
{non seulement des crochets mais avec tout ce que vous utilisez pour afficher différentes permutations} ou id
sont acceptables.
LECTURE SUPPLÉMENTAIRE
Vous pouvez trouver plus d'informations ici:
BONNE CHANCE
Et comme il s'agit de codegolf, quiconque peut imprimer les permutations du groupe alternatif An dans les octets les plus courts gagne.
(2 3 1 4)
en ordre croissant? Voulez-vous dire que nous devrions simplement mettre le plus petit élément à l'avant?
(2 3 1 4)
même 2->3->1->4->2
qu'il peut être écrit (1 4 2 3)
avec son plus petit élément en premier
[[1, 2], [3, 4]]
au lieu de(1 2)(3 4)
?