배경
조합 논리 가 무엇인지 배웠습니다 . 다양한 콤비 네이터에 흥미가 있습니다. 당신은 마침내이 특정한 표현을 우연히 발견했습니다.
(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을 사용하는 콤비 네이터 수로 표현을 찾는 것입니다.
채점
점수는 표현주기의 길이에 따라 결정됩니다. 두 사람의 표현이 동일한주기를 가지면 더 적은 수의 결합자를 사용하는 답이 이깁니다. 둘 다 같은 수의 콤비 네이터를 사용하면 이전 답변이 우선합니다.
행운을 빌고 재미있게 보내!
atomic-code-golf 는 타이 브레이커에 적합하지만 타이 브레이커에 태그를 추가하지는 않습니다. 적절한 태그가없는 경우 기본값은 code-challenge입니다 . 이는 도전이 사용자 지정 기준을 사용함을 나타냅니다.
—
Martin Ender
표기법이 사용하는 연관성 규칙을 말하면 도움이 될 것입니다.
—
xnor
주기 주어진 식을 여러 감소를 사용할 수 있기 때문에 당신이 그것을 정의한대로 반드시 잘 정의되어 있지 않습니다.
—
피터 테일러
@ThreeFx, 당신은 착각입니다. 예 :이 경우
—
피터 테일러
x
에 감소가 y
다음을 W f x -> W f y -> f y y
하거나 W f x -> f x x -> f x y -> f y y
다른 길이 있습니다.
까다로운 점은 누군가가 사이클을 게시하는 것만으로는 점수를 주장 할 수 없다는 것입니다. 더 짧은 감소가 없다는 증거가 필요하며, 이는 계산 상 어려울 수 있습니다.
—
xnor