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->1e 4->5->4ed 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 idsiano 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->2può essere scritto (1 4 2 3)con il suo elemento più piccolo prima
[[1, 2], [3, 4]]anziché(1 2)(3 4)?