Contexte
Vous venez d'apprendre ce qu'est la logique combinatoire . Intrigué par les différents combinateurs, vous passez un peu de temps à les découvrir. Vous tombez enfin sur cette expression particulière:
(S I I (S I I))
Vous remarquez que lorsque vous essayez de le réduire à sa forme normale, il se réduit à lui-même après trois étapes:
(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)
Vous êtes déterminé à trouver d'autres expressions qui partagent ce trait et à commencer à y travailler immédiatement.
Règles
Vous pouvez utiliser n'importe quelle combinaison des combinateurs suivants:
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
L'application est laissée associative, ce qui signifie que
(S K K)
c'est effectivement le cas((S K) K)
.Une réduction est minime, il n'y a pas d'autre ordre d'étapes de réduction qui utilise moins d'étapes. Exemple: si
x
a réductiony
, alors la réduction minimale correcte de(W f x)
est:(W f x) = (W f y) (1) = f y y (2)
et pas
(W f x) = f x x (1) = f y x (2) = f y y (3)
Des échappatoires standard s'appliquent.
Tâche
Nous définissons le cycle d'une expression comme étant le nombre minimal de réductions entre deux mêmes expressions.
Votre tâche consiste à trouver l'expression, avec le nombre de combinateurs utilisés <100, qui produit le cycle le plus long.
Notation
Votre score sera déterminé par la durée du cycle de votre expression. Si l'expression de deux personnes a le même cycle, la réponse qui utilise moins de combinateurs l'emporte. S'ils utilisent tous les deux le même nombre de combinateurs, la réponse précédente l'emporte.
Bonne chance et amusez-vous bien!
la source
x
a une réduction jusque-y
làW f x -> W f y -> f y y
ouW f x -> f x x -> f x y -> f y y
sont de longueurs différentes.Réponses:
Je dois commencer par quelque chose
la source