ЗАДАНИЕ
ОПРЕДЕЛЕНИЯ
Рассмотрим точки {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)
и один цикл длиной 2 (4 5)
. При классификации перестановки как нечетной или четной мы игнорируем циклы нечетной длины и говорим, что эта перестановка [ (1 2 3)(4 5)
] является нечетной, так как имеет нечетное число {1} циклов четной длины. Ещё примеры:
(1)(2 3)(4 5)
= два 2 цикла длины | ДАЖЕ |(1 2 3 4 5)
= нет четных циклов длины | ДАЖЕ | * обратите внимание, что если нет четных циклов длины, то перестановка четная.
Странные примеры:
(1 2)(3 4 5)
= один цикл 2 длины | ODD |(1)(2 3 4 5)
= один цикл 4 длины | ODD |
Поскольку ровно половина перестановок в любой симметрической группе является четной, мы можем назвать четную группу чередующейся группой 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
являются приемлемыми.
ДОПОЛНИТЕЛЬНОЕ ЧТЕНИЕ
Вы можете найти больше информации здесь:
УДАЧИ
И поскольку это - кодовый гольф, тот, кто сможет напечатать перестановки группы переменных 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)
?