Цикл - это довольно простая алгебраическая структура. Это кортеж (G +) , где G представляет собой множество , а + является бинарным оператором G × G → G . То есть + берет два элемента из G и возвращает новый элемент. Оператору также необходимо выполнить два свойства
Отмена: Для каждого a и b в G существуют уникальные x и y в G, такие что
a + x = b y + a = b
Идентичность: в G есть такое e , что для каждого a в G
e + a = a a + e = a
Если вы знакомы с концепцией группы, вы можете заметить, что цикл - это просто группа, которая не имеет ассоциативного свойства.
Циклы довольно просты, поэтому людям нравится добавлять больше правил, чтобы сделать новые структуры более интересными. Одной из таких структур является петля Муфанга, которая также удовлетворяет следующим четырем тождествам для x , y и z в G
z + (x + (z + y)) = ((z + x) + z) + y
((y + z) + x) + z = y + (z + (x + z))
(z + x) + (y + z) = (z + (x + y)) + z
(z + x) + (y + z) = z + ((x + y) + z)
Например, следующая таблица Кэли представляет цикл Муфанга:
0 1 2 3
1 0 3 2
2 3 0 1
3 2 1 0
(Если вы не знакомы, таблица Кэли - это квадратная матрица M, где M i, j равно i + j . Это удобный способ представления бинарных операторов на множестве.)
Мы можем доказать, что идентичность существует довольно легко 0
. Отмена немного сложнее показать, но подход грубой силы дает эту таблицу
b a → 0 1 2 3
↓
0 0 1 2 3
1 1 0 3 2
2 2 3 0 1
3 3 2 1 0
Где наши элементы являются решениями для
a + x = b = x + a
(Вы можете заметить, что эта таблица идентична нашей таблице Кейли. Я оставлю это в качестве упражнения для читателя, чтобы выяснить, почему это так для этой петли Муфанга)
Теперь нам нужно проверить тождества Муфанга для нашей структуры. Есть два способа сделать это для конкретной структуры. Первый способ - понять, что она ассоциативна и, таким образом, автоматически удовлетворяет критериям, однако в общем случае это не сработает, поэтому мы бы предпочли грубый результат. Здесь есть 3 свободные переменные с потенциалом 4 значения в каждом выражении. Это означает, что мы должны выполнить 7 * 4 3 или 448 вычислений. Я опущу необработанные вычисления, но вот несколько Haskell, которые вы можете использовать, чтобы проверить это .
задача
Учитывая положительное целое число n в качестве входных данных, количество циклов Муфанга, которые имеют порядок n . (порядок группы равен размеру набора)
Это код-гольф, поэтому ответы будут оцениваться в байтах, причем меньшее количество байтов будет лучше.
Контрольные примеры
Вот количество циклов Муфанга для первых 71 входа
1,1,1,2,1,2,1,5,2,2,1,6,1,2,1,19,1,5,1,6,2,2,1,20,2,2,5,5,1,4,1,122,1,2,1,18,1,2,2,19,1,7,1,5,2,2,1,103,2,5,1,6,1,17,2,17,2,2,1,18,1,2,4,4529,1,4,1,6,1,4,1
источник
12
не так11
. Я должен был понять это, потому что11
это простое число.Ответы:
Python 3 ,
475410 байтСпасибо Mr.Xcoder за сохранение некоторых байтов!
Используйте симметрию формулы, чтобы сохранить 65 байтов. Да, это много.
Попробуйте онлайн!
Некоторые из них
and
могут быть заменены*
, что приводит к снижению количества пользователей, но за счет значительно более медленного времени выполнения:Python 3 , ??? байтов
[TODO поставить код здесь]
(конечно, не все
*
делает программу значительно медленнее, только некоторые из них являются критическими)Ungolfed:
Попробуйте онлайн!
Нет полос прокрутки ...
Объяснение:
Программа довольно проста.
e
такое, что иe
'-ая строка, иe
' -й столбец равны[0, 1, 2, ..., n-1]
, что является тем же условием, что иИтак, часть
кода проверяет это. (для всей строки в массиве
T
и его транспонированияA
сортировка равнаrangeN
, и существует строка в обоих,T
иA
это равно самой сортировке)Четыре условия петли Муфанга проверяются вручную.
В коде
(a + b)
представлен какT[a][b]
. (из-за представления в виде таблицы Кэли). Используйте сравнение равенства цепочек Python, чтобы избежать дублирования(z + x) + (y + z)
.Однако, поскольку формула симметрична:
Если мы переключим операнды
+
в первой формуле, мы получим вторую формулу; и если мы поменяем операнды+
в третьей формуле, мы получим четвертую формулу сx
иy
поменялись местами.Обратите внимание, что транспонирование таблицы Кэли эквивалентно бинарным операторам, чьи операнды поменялись местами. (
x + y -> y + x
)Наконец, все кандидаты в таблицу Cayley выбираются из
так что каждая строка является перестановкой
rangeN
(которая есть[0, 1, 2, ..., n-1]
) и естьn
отдельные строки.источник