Bei zwei Permutationen in disjunkter Zyklusform geben Sie ihr Produkt / ihre Zusammensetzung in disjunkter Zyklusform aus.
Um die Komposition zu finden, konvertieren Sie die disjunkten Zyklen in Permutationen in zweizeiliger Notation. Jede Nummer in einem disjunkten Teil eines Zyklus wird der darauf folgenden Nummer im selben Teil zugeordnet. Es wickelt sich herum. Also 1 -> 5
, 5 -> 1
, 2 -> 4
, 4 -> 2
. Wenn eine Nummer nicht gefunden wird 3 -> 3
, wird sie sich selbst zugeordnet. Der erste disjunkte Zyklus könnte auch geschrieben werden (1 5)(2 4)(3)
. Diese Zuordnungen werden wie folgt in zwei Zeilen konvertiert (beachten Sie, dass die Reihenfolge von P und Q umgekehrt ist):
Das Produkt zweier Permutationen wird erhalten, indem die Spalten der zweiten (ganz links) Permutation so angeordnet werden, dass ihre erste Reihe mit der zweiten Reihe der ersten (ganz rechts) Permutation identisch ist. Das Produkt kann dann als erste Zeile der ersten Permutation über die zweite Zeile der modifizierten zweiten Permutation geschrieben werden.
Regeln:
- Die Eingabe erfolgt als Liste von Listen oder ähnlichem Format
- Sie können nicht so etwas wie nehmen ,
(1 5)(2 4)
wie[5, 4, 3, 2, 1]
bereits in zwei Online-Formular (Mapping - Index - Wert) - Es müssen nicht alle Zahlen in jeder Gruppe vorkommen, also könnte dies der
(1 5)·(1 2)
Fall sein(2 5 1)
. - Ihre Ausgabe sollte als Eingabe verwendet werden können.
- Sie müssen die Eingabe nicht mit einem leeren Zyklus unterstützen
(1 5)·()
. Das wäre stattdessen als(1 5)·(1)
oder etwas Äquivalentes gegeben. - Da Zyklen umlaufen, spielt die Reihenfolge keine Rolle, solange das Ergebnis korrekt ist.
- Sie können bei Null oder Eins beginnen. Es spielt keine Rolle, da die Ergebnisse gleich sind.
- Die Zahlen können größer sein als
9
. - Sie dürfen dieselbe Nummer nicht mehr als einmal in die Ausgabe aufnehmen. Also
[[1],[1]]
ist nicht erlaubt. - Beachten Sie, dass diese Operation nicht kommutativ ist ! Ich habe Q vor P gesetzt, weil Wikipedia das getan hat. Sie können eine beliebige Reihenfolge wählen, aber angeben, welche, wenn es anders ist.
- Der kürzeste Code gewinnt
- Eingebaute sind zulässig, aber wenn Sie eine verwenden, zeigen Sie eine Lösung, ohne sie ebenfalls zu verwenden.
Beispiele:
Es werden nicht alle äquivalenten Ausgabemöglichkeiten angezeigt
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]]