19, Octave, 196 bytes
Note: I made an edit to the code, to fix an error. The only change was to include the palindrome rule. This avoids a false positive for answer 10.
Most requirements up until now can easily be circumvented using comments and suppressed strings, making it trivial to add answers. I figured I'd make it a bit harder by disallowing some characters instead.
.6;%+->?|"e"|?>-+%;6.
f=@(x)all(ismember('Hi, Retina!',x))&sum(ismember(x,cat(2,33:36,46,91:93,'')))<6&x(2)<60&all((k=x(1:find(x==10,1)-1))==flip(k))
%
Satisfies:
- The first character is a
.
. - It contains an
e
. - Its length is even.
- Its length is a perfect square.
- It contains an
a
. - It contains a
>
character. - Contains the exact string
->
. - Contains the exact string
Hi, Retina!
. - The sum of the first two Unicode code points is a multiple of 5.
- The 10-th character is a
"
. - The last non-empty line does not have any duplicate characters.
- The first line is a palindrome of length > 5.
- The first line is exactly 21 characters long (not including newline).
- It contains a
?
. - It contains a
|
. - Contains a
+
. - It is at least 28 lines long.
- The following characters are used five times in total:
!"#$.[\]
and the codepoint of the second character is less than 60.
For future answers:
- The first character is a
.
, and so is the 21st character (palindromic rule). - Its length is an even perfect square.
- Contains the exact sequence
->
. - Contains the exact string
Hi, Retina!
. - The second character's Unicode code point, mod 5, is 4, and its code point is lower than 60.
- The 10-th character is a
"
, and so is the twelfth character (palindromic rule). - The last non-empty line does not have any duplicate characters.
- The first line is a palindrome of length = 21
- It contains a
?
. - It contains a
|
. - It contains a
+
. - It is at least 28 lines long.
- The following characters can only be used five times in total:
!"#$.[\]
. - Each program is now allowed only the 2
.
and 2"
in the first line, and the!
inHi, Retina!
. Those characters cannot be used anywhere else, in addition to no uses of#$[\]
.