이 과제에서는 문자열을 입력으로 사용하여 두 가지 가능한 값 중 하나를 출력하는 프로그램이나 함수를 작성해야합니다. 우리는 다음 값 중 하나를 호출합니다 truthy 한 falsy을 . 실제로 진실 하거나 허위 일 필요는 없습니다 . 답변이 유효하려면 네 가지 추가 기준을 충족해야합니다.
프로그램을 자신에게 전달하면 진실한 가치가 출력 됩니다.
이전 답변에 입력으로 프로그램을 전달하면 (전달중인 프로그램의) 진실한 출력을 출력 해야합니다 .
이전 답변을 입력으로 답변에 전달하면 (프로그램의) 잘못된 출력을 출력 해야합니다 .
챌린지에 대한 모든 답변 (신규 답변 포함)에서 진실한 결과로 평가되는 무한한 문자열이 있어야합니다 .
이것이 할 일은 체인의 다른 프로그램이 체인의 앞뒤에 있는지 여부를 결정할 수있는 응답 체인을 천천히 작성하는 것입니다.
이 과제의 목표는 연속적인 답변에 적용되는 소스 제한 목록을 작성하여 각각을 이전보다 더 어렵게 만드는 것입니다.
예
체인 (하스켈로 작성)은 다음과 같이 시작할 수 있습니다.
f _ = True
더 오래된 프로그램이 없기 때문에 기준이이 답변에 적용되지 않으므로 가능한 두 값 중 하나만 출력하면됩니다.이 경우 항상 출력 True
됩니다.
다음에 답이 될 수 있습니다.
f x=or$zipWith(==)x$tail x
문자열의 어딘가에 한 행에 문자가 두 번 있다고 주장합니다. 첫 번째 답변에는이 속성이 없지만 두 번째 답변에는이 속성이 없습니다 ==
. 따라서 이것은 유효한 다음 답변입니다.
특별 규칙
원하는 횟수만큼 원하는 언어를 자유롭게 사용할 수 있습니다 (무료로 구현 가능).
마지막으로 답변 한 사람인 경우 새 답변을 게시하기 전에 7 일 이상 기다려야합니다.
프로그램이 자체 소스를 읽지 못할 수 있습니다.
4 번째 규칙은 암호화 기능이 관련되어 있는지 검증하기가 매우 어렵 기 때문에 이러한 기능은 허용되지 않습니다.
득점 기준
답변을 추가 할 때마다 체인의 위치만큼 많은 점수를받습니다. 예를 들어 5 번째 답변은 작가 5 점을 얻습니다. 목표는 가능한 많은 점수를 얻는 것입니다. 마지막 답변은 답변자 -∞ 점을 얻습니다. 도전을 "승리"하기보다는 자신의 점수를 극대화하려고하면 더 재미있을 것입니다. 나는 대답을 받아들이지 않을 것이다.