In this challenge you are to write a program or function, that takes a string as input and outputs one of two possible values. We will call one of these values truthy and one falsy. They do not need to actually be truthy or falsy. For an answer to be valid it must meet four additional criteria
When you pass your program to itself it outputs the truthy value.
If you pass your program as input to any older answer it should output the truthy output (of the program you are passing to).
If you pass any older answer to your answer as input it should output the falsy output (of your program).
There must be an infinite number of strings that evaluate to truthy output in all answers on the challenge (including your new answer).
What this will do is it will slowly build up a chain of answers each of which can determine if other programs in the chain come before or after it.
The goal of this challenge is to build up a list of source restrictions that are applied to the successive answers making each one more challenging than the last.
Example
A chain (written in Haskell) could start:
f _ = True
Since there are no older programs, the criteria do not apply to this answer it need only output one of two possible values, in this case it always outputs True
.
Following this could be the answer:
f x=or$zipWith(==)x$tail x
Which asserts that there is a character twice in a row somewhere in the string. The first answer doesn't have this property while the second does (==
). Thus this is a valid next answer.
Special rules
You may use any language you wish (that has a freely available implementation) as many times as you wish.
If you were the last person to answer you must wait at least 7 days before posting a new answer.
Your program may not read its own source.
Since the 4th rule is exceedingly difficult to verify if cryptographic functions are involved, such functions are disallowed.
Scoring criterion
Each time you add an answer you will get as many points as its place in the chain. For example the 5th answer would gain it's writer 5 points. The goal is to get as many points as you can. The last answer will score its answerer -∞ points. This will probably be more fun if you try to maximize your own score rather than "win" the challenge. I will not be accepting an answer.
Since this is answer-chaining you may want to sort by oldest