Biorąc pod uwagę dwie permutacje w formie rozłącznego cyklu, wyprowadzaj ich produkt / skład w formie rozłącznego cyklu.
Aby znaleźć kompozycję, zamień cykle rozłączne na permutacje w notacji dwuwierszowej. Każda liczba w rozłącznej części cyklu jest odwzorowywana na liczbę występującą po niej w tej samej części. Owija się wokół. Więc 1 -> 5
, 5 -> 1
, 2 -> 4
, 4 -> 2
. Jeśli liczba nie zostanie znaleziona, 3 -> 3
zostanie zamapowana na siebie. Można również napisać pierwszy cykl rozłączny (1 5)(2 4)(3)
. Te odwzorowania są konwertowane na dwie linie, podobnie jak (zauważ, że kolejność P i Q są odwrócone):
[T] iloczyn dwóch permutacji uzyskuje się przez przestawienie kolumn drugiej permutacji (skrajnie z lewej), tak aby jej pierwszy rząd był identyczny z drugim rzędem pierwszego (skrajnie z prawej) permutacji. Produkt można następnie zapisać jako pierwszy wiersz pierwszej permutacji nad drugim rzędem zmodyfikowanej drugiej permutacji.
Zasady:
- Dane wejściowe zostaną podane jako lista list lub podobny format
- Być może nie ma czegoś takiego
(1 5)(2 4)
jak[5, 4, 3, 2, 1]
, już w postaci dwóch linii (indeks mapowanie wartości) - Nie wszystkie liczby muszą występować w każdej grupie, więc możesz to zrobić
(1 5)·(1 2)
, w wyniku czego(2 5 1)
. - Twoje dane wyjściowe powinny być wykorzystywane jako dane wejściowe.
- Nie trzeba wspierać wprowadzania z pustym cyklem
(1 5)·()
. To byłoby zamiast tego podane jako(1 5)·(1)
lub coś równoważnego. - Ponieważ cykle się zawijają, kolejność nie ma znaczenia, dopóki wynik jest prawidłowy.
- Możesz zacząć od zera lub jednego. To nie ma znaczenia, ponieważ wyniki są takie same.
- Liczby mogą być większe niż
9
. - Nie można podać tej samej liczby więcej niż raz w danych wyjściowych. Więc
[[1],[1]]
nie jest dozwolone. - Pamiętaj, że ta operacja nie jest przemienna ! Stawiam Q przed P., bo tak właśnie zrobiła Wikipedia. Możesz wybrać dowolne zamówienie, ale określ, które z nich jest inne.
- Najkrótszy kod wygrywa
- Wbudowane są dozwolone, ale jeśli go użyjesz, pokaż rozwiązanie bez jego użycia.
Przykłady:
Nie pokazano wszystkich równoważnych możliwości wyjściowych
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]]