Фон
Ви тільки що дізналися, що таке комбінаційна логіка . Заінтригуючи різними комбінаторами, ви витрачаєте на них досить багато часу. Ви нарешті натрапляєте на цей конкретний вираз:
(S I I (S I I))
Ви помічаєте, що намагаючись зменшити його до нормальної форми, він зводиться до себе після трьох кроків:
(S I I (S I I))
= (I (S I I) (I (S I I))) (1)
= (S I I (I (S I I))) (2)
= (S I I (S I I)) (3)
Ви налаштовані знаходити інші вирази, які поділяють цю ознаку, і починаєте працювати над цим негайно.
Правила
Ви можете використовувати будь-яку комбінацію таких комбінаторів:
B f g x = f (g x) C f x y = f y x I x = x K x y = x S f g x = f x (g x) W f x = f x x
Застосування залишається асоціативним, а це означає, що
(S K K)
є насправді((S K) K)
.Скорочення є мінімальним , немає іншого порядку кроків зменшення, який використовує менше кроків. Приклад: якщо
x
є зменшенняy
, то правильне мінімальне зменшення(W f x)
становить:(W f x) = (W f y) (1) = f y y (2)
і ні
(W f x) = f x x (1) = f y x (2) = f y y (3)
Застосовуються стандартні лазівки.
Завдання
Цикл виразу ми визначаємо як мінімальну кількість скорочень між двома однаковими виразами.
Ваше завдання - знайти вираз із кількістю використовуваних комбінаторів <100, що дає найдовший цикл.
Оцінка балів
Ваш бал визначатиметься тривалістю циклу вашого вираження. Якщо вираз двох людей має один і той же цикл, відповідь, в якій використовується менше комбінаторів, виграє. Якщо вони обидва використовують однакову кількість комбінаторів, попередня відповідь виграє.
Хай щастить!
x
вона має зменшення до того y
часу W f x -> W f y -> f y y
або W f x -> f x x -> f x y -> f y y
є різною довжиною.