Петля - це досить проста алгебраїчна структура. Це кортеж (G +) , де G являє собою безліч , а + є бінарним оператором G × G → G . Тобто + бере два елементи з G і повертає новий елемент. Оператор також повинен виконати два властивості
Скасування: Для кожного a і b в G існує унікальне x і y в G таке, що
a + x = b y + a = b
Ідентичність: є e в G такий, що для кожного 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
це проста кількість.