この課題では、入力として文字列を受け取り、2つの可能な値のいずれかを出力するプログラムまたは関数を作成します。これらの値の1つを真実で1つを偽物と呼びます。彼らは実際に真実または偽物である必要はありません。回答が有効であるためには、4つの追加基準を満たす必要があります
プログラムを自分自身に渡すと、プログラムは真実の値を出力します。
プログラムを古い回答への入力として渡すと、(渡すプログラムの)真実の出力が出力されます。
入力として古い回答を回答に渡すと、(プログラムの)偽の出力が出力されるはずです。
チャレンジのすべての回答(新しい回答を含む)で、真の出力を評価する文字列が無数にある必要があります。
これにより、チェーン内の他のプログラムがその前後に来るかどうかを判断できる一連の回答が徐々に構築されます。
この課題の目標は、連続する回答に適用されるソース制限のリストを作成し、各回答を最後の回答よりも難しくすることです。
例
(Haskellで書かれた)チェーンを開始できます:
f _ = True
古いプログラムは存在しないため、この回答には基準が適用されず、2つの可能な値のいずれかを出力するだけで済み、この場合は常にoutputを出力しますTrue
。
これに従うことは答えかもしれません:
f x=or$zipWith(==)x$tail x
これは、文字列のどこかに文字が2回連続して存在することを表明します。最初の回答にはこのプロパティがありませんが、2番目の回答にはあります(==
)。したがって、これは有効な次の回答です。
特別なルール
任意の言語(自由に実装できる言語)を何度でも使用できます。
あなたが最後に回答した場合は、少なくとも7日間待ってから新しい回答を投稿する必要があります。
プログラムが独自のソースを読み取れない場合があります。
4番目のルールは暗号化機能が含まれているかどうかを確認するのが非常に難しいため、そのような機能は許可されていません。
スコアリング基準
回答を追加するたびに、チェーン内のその場所と同じ数のポイントを獲得できます。たとえば、5番目の答えは作家の5ポイントを獲得します。目標は、できるだけ多くのポイントを獲得することです。最後の回答では、回答者が-∞ポイントを獲得します。チャレンジに「勝つ」のではなく、自分のスコアを最大化しようとする場合、これはおそらくもっと楽しいでしょう。私は答えを受け入れません。