비 연속 사이클 형태로 두 개의 순열이 주어지면 비 연속 사이클 형태로 제품 / 조성물을 출력합니다.
컴포지션을 찾으려면 분리 된주기를 2 줄 표기법의 순열로 변환하십시오. 사이클의 분리 된 부분에있는 각 숫자는 같은 부분에서 그 뒤에 오는 숫자에 매핑됩니다. 그것은 감싸고 있습니다. 그래서 1 -> 5
, 5 -> 1
, 2 -> 4
, 4 -> 2
. 숫자를 찾을 수 없으면에 3 -> 3
매핑됩니다. 첫 번째 분리 사이클도 기록 될 수 있습니다 (1 5)(2 4)(3)
. 이러한 매핑은 다음과 같이 두 줄로 변환됩니다 ( P 와 Q 의 순서 는 반대 임).
두 개의 순열의 곱은 첫 번째 행이 첫 번째 (가장 오른쪽) 순열의 두 번째 행과 동일하도록 두 번째 (가장 왼쪽) 순열의 열을 재 배열하여 구합니다. 그런 다음 수정 된 두 번째 순열의 두 번째 행에 대해 첫 번째 순열의 첫 번째 행으로 곱을 쓸 수 있습니다.
규칙 :
- 입력은 목록 또는 유사한 형식의 목록으로 제공됩니다
- 당신은 할 수 없습니다 같은 걸릴
(1 5)(2 4)
등을[5, 4, 3, 2, 1]
두 줄의 형태로 이미, (값 매핑 인덱스) - 모든 숫자는 당신이 가진 수 있도록, 각 그룹에서 발생해야
(1 5)·(1 2)
결과(2 5 1)
. - 출력을 입력으로 사용할 수 있어야합니다.
- 빈 사이클로 입력을 지원할 필요는 없습니다
(1 5)·()
. 대신(1 5)·(1)
또는 이와 동등한 것으로 제공됩니다 . - 주기가 줄 바꿈되므로 결과가 올바른 한 순서는 중요하지 않습니다.
- 0에서 시작하거나 1에서 시작할 수 있습니다. 결과는 동일하기 때문에 중요하지 않습니다.
- 숫자가보다 클 수 있습니다
9
. - 출력에 같은 숫자를 두 번 이상 포함 할 수 없습니다. 따라서
[[1],[1]]
허용되지 않습니다. - 이 작업은 정식 이 아닙니다 ! 나는 위키피디아가 한 일이기 때문에 Q를 P 앞에 뒀다. 주문을 선택할 수 있지만 다른 주문을 지정할 수 있습니다.
- 최단 코드 승리
- 내장 기능은 허용되지만 사용하는 경우 솔루션을 사용하지 않고 솔루션을 표시하십시오.
예 :
모든 동등한 출력 가능성이 표시되는 것은 아닙니다
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]]