fundo
Você acabou de aprender o que é lógica combinatória . Intrigado com os vários combinadores, você gasta bastante tempo aprendendo sobre eles. Você finalmente encontra essa expressão específica:
(S I I (S I I))
Você percebe que ao tentar reduzi-lo à sua forma normal, ele se reduz após três etapas:
(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)
Você está determinado a encontrar outras expressões que compartilhem essa característica e começar a trabalhar imediatamente.
Regras
Você pode usar qualquer combinação dos seguintes combinadores:
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
O aplicativo é deixado associativo, o que significa que
(S K K)
é realmente((S K) K)
.Uma redução é mínima, não há outra ordem de etapas de redução que use menos etapas. Exemplo: se
x
tiver reduçãoy
, a redução mínima correta de(W f x)
é:(W f x) = (W f y) (1) = f y y (2)
e não
(W f x) = f x x (1) = f y x (2) = f y y (3)
Aplicam-se brechas padrão.
Tarefa
Definimos o ciclo de uma expressão como o número mínimo de reduções entre duas mesmas expressões.
Sua tarefa é encontrar a expressão, com o número de combinadores usados <100, que produz o ciclo mais longo.
Pontuação
Sua pontuação será determinada pela duração do ciclo de sua expressão. Se a expressão de duas pessoas tiver o mesmo ciclo, ganha a resposta que usa menos combinadores. Se os dois usarem o mesmo número de combinadores, a resposta anterior vence.
Boa sorte e divirta-se!
x
tiver uma redução até y
então W f x -> W f y -> f y y
ou tiver W f x -> f x x -> f x y -> f y y
comprimentos diferentes.