A TAREFA
DEFINIÇÕES
Considere os pontos {1,2,3,4,5} e todas as suas permutações. Podemos encontrar o número total de permutações possíveis desses 5 pontos com um truque simples: Criação de imagens preenchendo 5 slots com esses pontos, o primeiro slot terá 5 números possíveis, o segundo 4 (como um foi usado para preencher o primeiro slot) o terceiro 3 e assim por diante. Assim, o número total de permutações é 5 * 4 * 3 * 2 * 1; isso seria 5! permutações ou 120 permutações. Podemos pensar nisso como o grupo simétrico S5, e então o grupo simétrico Sn teria n! or (n*n-1*n-2...*1)permutações.
Uma permutação "par" é aquela em que existe um número par de ciclos de comprimento par. É mais fácil de compreender quando escrito em notação cíclico, por exemplo, (1 2 3)(4 5)permuta-se 1->2->3->1e 4->5->4e tem um ciclo de 3 comprimento (1 2 3)e um ciclo de 2 comprimento (4 5). Ao classificar uma permutação como ímpar ou par, ignoramos os ciclos de comprimento ímpares e dizemos que essa permutação [ (1 2 3)(4 5)] é ímpar, pois possui um número ímpar {1} de ciclos de comprimento par. Mesmo exemplos:
(1)(2 3)(4 5)= dois ciclos de 2 comprimentos | MESMO |(1 2 3 4 5)= sem ciclos de comprimento uniforme | MESMO | * observe que, se não houver ciclos de comprimento iguais, a permutação será uniforme.
Exemplos ímpares:
(1 2)(3 4 5)= um ciclo de 2 comprimentos | ODD(1)(2 3 4 5)= um ciclo de 4 comprimentos | ODD
Como exatamente metade das permutações em qualquer grupo simétrico são iguais, podemos chamar o grupo par de Grupo Alternativo N, assim como S5 = 120 A5 = 60 permutações.
NOTAÇÃO
As permutações devem, pelo menos para isso, ser escritas em notação cíclica, onde cada ciclo está entre parênteses diferentes e cada ciclo segue em ordem crescente. Por exemplo, (1 2 3 4 5)não (3 4 5 1 2). E para ciclos com um único número, como: (1)(2 3 4)(5)os pontos únicos / fixos podem ser excluídos (1)(2 3 4)(5) = (2 3 4). Mas a identidade {o ponto em que todos os pontos são fixos (1)(2)(3)(4)(5)} deve ser escrita como ()apenas para representá-la.
O DESAFIO
Gostaria que você, no menor código possível, pegue qualquer número inteiro positivo como entrada {1,2,3,4 ...} e exiba todas as permutações do Grupo Alternativo An onde n é a entrada / todos os pares permutações de Sn. Por exemplo:
Input = 3
()
(1 2 3)
(1 3 2)
e
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)
E, como nos exemplos, eu gostaria que todos os ciclos de um comprimento fossem eliminados, e quanto à identidade: saídas de nada, (){não apenas entre parênteses, mas com o que você estiver usando para mostrar permutações diferentes} ou idseja aceitável.
LEITURA EXTRA
Você pode encontrar mais informações aqui:
BOA SORTE
E como esse é o codegolf, quem pode imprimir as permutações do Alternating Group An nos bytes mais curtos ganha.
(2 3 1 4)em ordem crescente? Você quer dizer que devemos colocar o menor elemento na frente?
(2 3 1 4)que 2->3->1->4->2ele pode ser escrito (1 4 2 3)com o seu elemento mais pequeno primeiro
[[1, 2], [3, 4]]vez de(1 2)(3 4)?