tło
Właśnie dowiedziałeś się, czym jest logika kombinacyjna . Zaintrygowani różnymi kombinatorami spędzasz sporo czasu na poznawaniu ich. W końcu natkniesz się na to szczególne wyrażenie:
(S I I (S I I))
Zauważasz, że gdy próbujesz zredukować go do normalnej postaci, zmniejsza się do siebie po trzech krokach:
(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)
Jesteś zdeterminowany, aby znaleźć inne wyrażenia, które mają tę cechę i natychmiast zacząć nad tym pracować.
Zasady
Możesz użyć dowolnej kombinacji następujących kombinacji:
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
Aplikacja pozostanie skojarzona, co oznacza, że
(S K K)
tak naprawdę jest((S K) K)
.Redukcja jest minimalna, nie ma innej kolejności kroków redukcji, która wykorzystuje mniej kroków. Przykład: jeśli
x
ma redukcjęy
, wówczas poprawna minimalna redukcja(W f x)
to:(W f x) = (W f y) (1) = f y y (2)
i nie
(W f x) = f x x (1) = f y x (2) = f y y (3)
Obowiązują standardowe luki.
Zadanie
Cykl wyrażenia definiujemy jako minimalną liczbę redukcji pomiędzy tymi samymi wyrażeniami.
Twoim zadaniem jest znalezienie wyrażenia o liczbie używanych kombinatorów <100, co daje najdłuższy cykl.
Punktacja
Twój wynik zostanie określony na podstawie długości cyklu wyrażenia. Jeśli ekspresja dwóch osób ma ten sam cykl, wygrywa odpowiedź, która używa mniejszej liczby kombinacji. Jeśli oba używają tej samej liczby kombinacji, wygrywa wcześniejsza odpowiedź.
Powodzenia i miłej zabawy!
x
ma redukcję do y
tego czasu W f x -> W f y -> f y y
lub W f x -> f x x -> f x y -> f y y
mają różne długości.