Date due permutazioni in forma di ciclo disgiunto, produrre il loro prodotto / composizione in forma di ciclo disgiunto.
Per trovare la composizione, converti i cicli disgiunti in permutazioni in notazione a due righe. Ogni numero in una parte disgiunta di un ciclo è mappato al numero che lo segue nella stessa parte. Si avvolge. Così 1 -> 5, 5 -> 1, 2 -> 4, 4 -> 2. Se un numero non viene trovato, 3 -> 3viene mappato su se stesso. Il primo ciclo disgiunto potrebbe anche essere scritto (1 5)(2 4)(3). Queste mappature vengono convertite in due righe, in questo modo (si noti che l'ordine di P e Q sono invertiti):
Il prodotto di due permutazioni si ottiene riorganizzando le colonne della seconda permutazione (più a sinistra) in modo che la sua prima fila sia identica alla seconda riga della prima (più a destra) permutazione. Il prodotto può quindi essere scritto come prima riga della prima permutazione sulla seconda riga della seconda permutazione modificata.
Regole:
- L'input verrà fornito come un elenco di elenchi o un formato simile
- Si può non prendere qualcosa di simile
(1 5)(2 4), come[5, 4, 3, 2, 1], già in forma due righe (indice di mappatura a valore) - Non tutti i numeri devono essere presenti in ciascun gruppo, quindi potresti avere
(1 5)·(1 2), risultando(2 5 1). - L'output dovrebbe essere in grado di essere utilizzato come input.
- Non è necessario supportare l'input con un ciclo vuoto
(1 5)·(). Quello sarebbe invece dato come(1 5)·(1)o qualcosa di equivalente. - Poiché i cicli si concludono, l'ordine non ha importanza finché il risultato è corretto.
- Puoi iniziare da zero o uno. Non importa, perché i risultati sono gli stessi.
- I numeri possono essere più grandi di
9. - Non è possibile includere lo stesso numero più di una volta nell'output. Quindi
[[1],[1]]non è permesso. - Si noti che questa operazione non è commutativa ! Ho messo Q prima di P, perché è quello che ha fatto Wikipedia. Puoi scegliere qualsiasi ordine, ma specifica quale se è diverso.
- Il codice più corto vince
- Gli incorporati sono consentiti, ma se ne usi uno, mostra una soluzione anche senza usarla.
Esempi:
Non vengono visualizzate tutte le possibilità di output equivalenti
Input
Output
[[1, 5], [2, 4]], [[1, 2, 4, 3]]
[[1, 4, 3, 5]] (or [[4, 3, 5, 1]] or ...)
[[1, 5]], [[1, 2]]
[[2, 5, 1]]
[[10, 2, 3]], [[2]]
[[3, 10, 2]]
[[1]], [[3]]
[[]] (or [[1]] or something equivalent)
[[10,2,3,15],[1,7],[5,6],[14,4,13,11,12]], [[5,6,7,9,14],[2,8,3,10],[1,11]]
[[12, 14, 6, 1], [8, 15, 10, 3, 2], [13, 11, 7, 9, 4]]
(arguments in reverse order from above gives a different answer)
[[5,6,7,9,14],[2,8,3,10],[1,11]], [[10,2,3,15],[1,7],[5,6],[14,4,13,11,12]]
[[9, 14, 4, 13, 1], [10, 8, 3, 15, 2], [7, 11, 12, 5]]


