Перестановка размера n является переупорядочением первых n натуральных чисел. (имеется в виду, что каждое целое число появляется один раз и ровно один раз). Перестановки можно рассматривать как функции, которые изменяют порядок списка элементов размера n . Например
(4 1 2 3) ["a", "b", "c", "d"] = ["d", "a", "b", "c"]
Таким образом, перестановки могут быть составлены как функции.
(4 1 2 3)(2 1 3 4) = (4 2 1 3)
Это вызывает много интересных свойств. Сегодня мы сосредоточены на сопряженности . Перестановки y и x (оба размера n ) являются сопряженными, если существуют такие перестановки g и g -1 (также размера n ), что
x = gyg-1
и gg -1 равен тождественной перестановке (первые n чисел в правильном порядке).
Ваша задача - взять две перестановки одинакового размера с помощью стандартных методов ввода и решить, являются ли они сопряженными. Вы должны вывести одно из двух непротиворечивых значений: одно, если они являются сопряженными, и другое, если это не так.
Это код-гольф, поэтому ответы будут оцениваться в байтах, причем меньшее количество байтов будет лучше.
В вашем распоряжении множество теорем о сопряженных перестановках, так что удачи и удачного игры в гольф.
Вы можете принимать входные данные как упорядоченный контейнер значений (1-n или 0-n), представляющих перестановку, как описано выше, или как функцию, которая принимает упорядоченный контейнер и выполняет перестановку. Если вы решите использовать функцию, вы должны принять ее в качестве аргумента, а не иметь предопределенное имя.
Тестовые случаи
(1) (1) -> True
(1 2) (2 1) -> False
(2 1) (2 1) -> True
(4 1 3 2) (4 2 1 3) -> True
(3 2 1 4) (4 3 2 1) -> False
(2 1 3 4 5 7 6) (1 3 2 5 4 6 7) -> True
источник
Ответы:
Python 2 , 87 байт
Попробуйте онлайн!
Принимает
P
в качестве пары как перестановки, так иk
их длину. Выходы1
для конъюгатов а0
нет.Это использует результат:
Две сопряженные перестановки удовлетворяют этому, потому что их k-й степени также сопряжены, и сопряженность сохраняет количество неподвижных точек.
Менее очевидно, что любые две несопряженные перестановки всегда различаются. В частности, сопряженность определяется отсортированным списком длин циклов, и их можно восстановить из числа фиксированных точек. Один из способов показать это с помощью линейной алгебры, хотя это может быть излишним.
Пусть X - матрица перестановок для x . Тогда число неподвижных точек x k равно Tr (X k ) . Эти следы являются степенными симметричными полиномами собственных значений X k с кратностью. Эти полиномы для k от 0 до n позволят нам восстановить соответствующие элементарные симметрические полиномы этих собственных значений, и, следовательно, характеристический полином и, следовательно, сами собственные значения.
Поскольку эти собственные значения являются корнями единицы, соответствующими циклам x , из них мы можем восстановить размеры циклов и их кратности. Итак, наша «подпись» идентифицирует перестановку с точностью до сопряжения.
источник
J ,
25 байтов23 байта16 байтовмолчаливое решение миль :
Явное решение OP:
Это проверяет, имеют ли перестановки x и y одинаковый тип цикла, используя встроенную
C.
функцию для создания представлений цикла.источник
-:&([:/:~#&>)&C.
, используя неявную форму. Вот ссылка TIO, чтобы попробовать это.c=:
MATL ,
20191716 байтВход: два вектора столбцов (используется в
;
качестве разделителя). Вывод:1
если сопряжено,0
если нет.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Не используются теоремы о перестановках (из-за чистого невежества); просто грубая сила и эти два факта
Для двух перестановок p и q композиция pq эквивалентна использованию p для индексации элементов q .
Условие x = gyg −1 эквивалентно xg = gy .
Код комментария:
источник
Wolfram Language (Mathematica) , 44 байта
Попробуйте онлайн!
Wolfram Language (Mathematica) , 44 байта
Использование кодировки CP-1252, где
±
один байт.Попробуйте онлайн!
источник
Желе , 11 байт
Попробуйте онлайн!
Как это устроено
источник
y
какие индексы в каждомg⁻¹
, а не наоборот. Смотрите пример(4 1 2 3)(2 1 3 4) = (4 2 1 3)
. При вашем подходе это привело бы к тому(1 4 2 3)
, что вторые индексируют в первый. Учитывая это, у меня есть 12-байтовое решение, которое я пока не испорчу. :-)Œ!©Ụ€⁹ịЀ®ị"⁸e
(в основном все индексации с обратными аргументами), за исключением более короткого после того, как я сделал значительные изменения. Я не думаюg⁻¹yg
, что так же, какgyg⁻¹
. Кроме того, я думаю, что ваш ответ тоже может принести пользу от этих модификаций, но, как я уже говорил, я пока не хочу портить удовольствие.x = g⁻¹yg
, значитgxg⁻¹ = y
, такx
иy
являются сопряженными.eŒ!ị"Ụị@¥€¥¥
Шелуха , 9 байт
Возвращает
1
для сопряженных и0
не сопряженных. Попробуйте онлайн!объяснение
Класс сопряженности перестановок P из L = [1,2, .., п] определяется мультимножестве , содержащей наименьший период каждого числа в L под P . Когда P берется в виде списка, я могу заменить L на P и получить тот же мультимножество. Программа вычисляет соответствующий мультимножество для каждого входа и проверяет, является ли один подмножеством другого. Поскольку они имеют одинаковое количество элементов, это эквивалентно тому, что они являются одним и тем же мультимножеством.
источник
Perl
615857 байтВключает
+2
в себя дляap
Дайте 0-основанные перестановки как 2 строки на STDIN
Алгоритм - это небольшая вариация алгоритма в решении xnor
Эта более старая версия кода встречается с ошибкой Perl и сбрасывает ядро для нескольких входных данных на моем последнем Perl
5.26.1
, но работает на более старом Perl5.16.3
.Возможно, это еще один пример моего старого врага perlgolf, тот факт, что perl неправильно пересчитывает свой стек.
источник
JavaScript (ES6),
6664 байтаЕсли я правильно прочитал остальные ответы, проблема эквивалентна подсчету периодов всех элементов и проверке того, что два списка имеют одинаковое число для каждого периода. Изменить: 1 байт благодаря @Arnauld, вычисляя на единицу меньше периода. Благодаря @Arnauld удалось сэкономить еще один байт, применив странные правила принуждения JavaScript для сравнения массивов. Еще один байт можно сохранить с помощью карри, но я не люблю карри, если только это не куриная тикка масала.
источник