- 21, Oct 2024
- #1
Учитывая два перестановки в форме непересекающегося цикла выведите их продукт/композицию в форме непересекающегося цикла.
Чтобы найти композицию, преобразуйте непересекающиеся циклы в перестановки в двухстрочной записи. Каждое число в непересекающейся части цикла сопоставляется с числом, следующим за ним в той же части. Оно обволакивает. Так
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]]
, [[1],[1]]
, 9
, (1 5)·(1)
. Если номер не найден, (1 5)·()
, it is mapped to itself. The first disjoint cycle could also be written (2 5 1)
. Эти сопоставления преобразуются в две строки, например (обратите внимание, что порядок П и вопрос перевернуты):
[T]Произведение двух перестановок получается перестановкой столбцов второй (крайней левой) перестановки так, чтобы ее первая строка была идентична второй строке первой (крайней правой) перестановки. Затем произведение можно записать как первую строку первой перестановки поверх второй строки модифицированной второй перестановки.
Правила:
- Ввод будет предоставлен в виде списка списков или аналогичного формата.
- Вы можете нет возьми что-то вроде
(1 5)·(1 2)
as[5, 4, 3, 2, 1]
, уже в двухстрочной форме (сопоставление индекса со значением) - Не все числа должны встречаться в каждой группе, поэтому вы можете
(1 5)(2 4)
, resulting in(1 5)(2 4)(3)
. - Ваш вывод должен быть использован в качестве ввода.
- Вам не нужно поддерживать ввод с пустым циклом
3 -> 3
. That would instead be given as4 -> 2
или что-то эквивалентное. - Поскольку циклы цикличны, порядок не имеет значения, если результат верен.
- Вы можете начать с нуля или с единицы. Это не имеет значения, потому что результаты одинаковы.
- Числа могут быть больше, чем
2 -> 4
. - Вы не можете включать в вывод одно и то же число более одного раза. Так
5 -> 1
is not allowed. - Обратите внимание, что эта операция не коммутативный! Я поставил Q перед P, потому что так сделала Википедия. Вы можете выбрать любой порядок, но укажите какой, если он другой.
- Самый короткий код выигрывает
- Встроенные модули разрешены, но если вы их используете, покажите решение, не используя его.
Примеры:
Показаны не все эквивалентные возможности вывода.
1 -> 5
#код-гольф #перестановки #абстрактная-алгебра