작업
정의
점 {1,2,3,4,5}와 모든 순열을 고려하십시오. 간단한 요령으로이 5 점의 가능한 순열의 총 수를 찾을 수 있습니다.이 점들로 5 개의 슬롯을 채우는 이미징, 첫 번째 슬롯에는 5 개의 가능한 숫자가 있고, 두 번째에는 4가 있습니다 (하나는 첫 번째 슬롯을 채우는 데 사용됨) 세 번째 3 등. 따라서 순열의 총 개수는 5 * 4 * 3 * 2 * 1입니다. 이것은 5입니다! 순열 또는 120 순열 이것을 대칭 그룹 S5라고 생각하면 대칭 그룹 Sn은 n! or (n*n-1*n-2...*1)
순열 을 가질 수 있습니다 .
"짝수"순열은 짝수의 짝수 길이주기가있는 순열입니다. 그것은 예를 들어, 순환 표기법으로 작성하면 이해하기 가장 쉬운 (1 2 3)(4 5)
순서를 무작위로 바꾸어 넣 1->2->3->1
및 4->5->4
하나의 3 길이주기가 (1 2 3)
하나 둘 길이주기를 (4 5)
. 순열을 홀수 또는 짝수로 분류 할 때 홀수 길이주기를 무시하고이 순열 [ (1 2 3)(4 5)
]은 짝수 길이주기의 홀수 {1}을 갖기 때문에 홀수 라고 말합니다 . 예를 들면 :
(1)(2 3)(4 5)
= 2 개의 2 길이 사이클 | 짝수 |(1 2 3 4 5)
= 짝수 길이주기 | 짝수 | * 짝수 길이주기가 없으면 순열이 균일하다는 점에 유의하십시오.
이상한 예 :
(1 2)(3 4 5)
= 하나의 2 길이주기 | 홀수 |(1)(2 3 4 5)
= 하나의 4 길이 사이클 | 홀수 |
대칭 그룹의 순열 중 정확히 절반이 짝수이므로 짝수 그룹을 교대 그룹 N이라고 부를 수 있으므로 S5 = 120 A5 = 60 순열입니다.
표기법
이를 위해서는 최소한 각주기가 다른 괄호 안에 있고 각주기가 오름차순으로 바뀌는 순환 표기법으로 치환을 작성해야합니다. 예를 들어 (1 2 3 4 5)
아닙니다 (3 4 5 1 2)
. 그리고 다음과 같이 단일 숫자가있는 사이클의 (1)(2 3 4)(5)
경우 단일 / 고정 점을 제외 할 수 있습니다 (1)(2 3 4)(5) = (2 3 4)
. 그러나 신원 (모든 지점이 고정 된 지점)은 단지 그것을 나타 내기 위해 (1)(2)(3)(4)(5)
작성되어야 ()
합니다.
도전
가능한 작은 코드로 양의 정수를 입력 {1,2,3,4 ...}로 가져 와서 교대 그룹 An의 모든 순열을 표시하고 싶습니다. 여기서 n은 입력 / 모든 짝수 Sn의 순열. 예를 들면 다음과 같습니다.
Input = 3
()
(1 2 3)
(1 3 2)
과
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)
그리고 예제에서와 같이 한 길이의 모든 사이클을 없애고 정체성에 관해서는 : 아무것도 출력
()
하지 않고 (대괄호뿐만 아니라 다른 순열을 표시하기 위해 사용하는 모든 것과 함께) id
허용됩니다.
독해
자세한 정보는 여기에서 찾을 수 있습니다.
행운을 빕니다
그리고 이것은 codegolf이므로 누구든지 교대 그룹 An의 순열을 가장 짧은 바이트로 인쇄 할 수 있습니다.
(2 3 1 4)
을 오름차순으로 어떻게 배치 합니까? 가장 작은 요소를 앞에 놓아야합니까?
(2 3 1 4)
가 순서를 어지럽히 지 않는 한 가장 먼저 시작해야합니다.2->3->1->4->2
(1 4 2 3)
[[1, 2], [3, 4]]
대신에 출력 할 수(1 2)(3 4)
있습니까?