L'OBIETTIVO
DEFINIZIONI
Considera i punti {1,2,3,4,5} e tutte le loro permutazioni. Possiamo trovare il numero totale di possibili permutazioni di questi 5 punti con un semplice trucco: Imaging riempire 5 slot con questi punti, il primo slot avrà 5 possibili numeri, il secondo 4 (poiché uno è stato usato per riempire il primo slot) il terzo 3 e così via. Quindi il numero totale di permutazioni è 5 * 4 * 3 * 2 * 1; questo sarebbe 5! permutazioni o 120 permutazioni. Possiamo pensare a questo come al gruppo simmetrico S5 e quindi il gruppo simmetrico Sn avrebbe n! or (n*n-1*n-2...*1)
permutazioni.
Una permutazione "pari" è quella in cui esiste un numero pari di cicli di lunghezza pari. È facile capire quando scritto in notazione ciclico, ad esempio (1 2 3)(4 5)
permuta 1->2->3->1
e 4->5->4
ed ha un ciclo 3 lunghezza (1 2 3)
ed un ciclo 2 lunghezza (4 5)
. Quando classifichiamo una permutazione come dispari o addirittura ignoriamo i cicli di lunghezza dispari e diciamo che questa permutazione [ (1 2 3)(4 5)
] è dispari in quanto ha un numero dispari {1} di cicli di lunghezza pari. Anche esempi:
(1)(2 3)(4 5)
= due cicli di 2 lunghezze ANCHE |(1 2 3 4 5)
= nessun ciclo di lunghezza pari | ANCHE | * notare che se non sono presenti cicli di lunghezza pari, la permutazione è pari.
Esempi dispari:
(1 2)(3 4 5)
= un ciclo di 2 lunghezze ODD |(1)(2 3 4 5)
= un ciclo di 4 lunghezze ODD |
Poiché esattamente la metà delle permutazioni in qualsiasi gruppo simmetrico è pari, possiamo anche chiamare il gruppo pari il gruppo alternato N, così come S5 = 120 A5 = 60 permutazioni.
NOTAZIONE
Le permutazioni dovrebbero, almeno per questo, essere scritte in notazione ciclica in cui ogni ciclo è tra parentesi diverse e ogni ciclo va in ordine crescente. Per esempio (1 2 3 4 5)
no (3 4 5 1 2)
. E per cicli con un singolo numero, come ad esempio: (1)(2 3 4)(5)
i punti singoli / fissi possono essere esclusi significato (1)(2 3 4)(5) = (2 3 4)
. Ma l'identità {il punto in cui sono fissati tutti i punti (1)(2)(3)(4)(5)
} dovrebbe essere scritta ()
solo per rappresentarla.
LA SFIDA
Vorrei che tu, nel minor numero possibile di codice, prendessi qualsiasi numero intero positivo come input {1,2,3,4 ...} e visualizzi tutte le permutazioni del gruppo alternato An dove n è l'input / tutto il pari permutazioni di Sn. Per esempio:
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 come negli esempi, vorrei che tutti i cicli di una lunghezza fossero elisi, e per quanto riguarda l'identità: output di nulla,
()
{non solo parentesi ma con qualunque cosa tu stia usando per mostrare permutazioni diverse} o id
siano accettabili.
LETTURA EXTRA
Puoi trovare maggiori informazioni qui:
IN BOCCA AL LUPO
E poiché questo è codegolf, chiunque può stampare le permutazioni del gruppo alternato An nei byte più corti vince.
(2 3 1 4)
in ordine crescente? Vuoi dire che dovremmo solo mettere l'elemento più piccolo in primo piano?
(2 3 1 4)
non 2->3->1->4->2
può essere scritto (1 4 2 3)
con il suo elemento più piccolo prima
[[1, 2], [3, 4]]
anziché(1 2)(3 4)
?