(Subtracting the 51 bytes of source code is negligible for such a large number.)
This is a version of my answer to Make a slow error quine maker. Requires the
-w flag for warning output.
The exact number of steps depends only on the value assigned to
i, so it could be arbitrarily large (until the Python interpreter runs out of memory). Also, it would take longer than the age of the universe to complete the above sequence.
Example here uses an
5 for purposes of explanation.
i, store a string in
d and then attempt to execute the
Swap statement. Swap expects two variables (more accurately, lvalues).
s is fine, but the second expression is
i is true (nonzero, for our purposes), the ternary evaluates to
dRo--iRsRPd, which uses
d from earlier to form a near-quine--only with
i decremented. This expression is not an lvalue, so Pip complains:
Attempting to swap non-lvalue i:4d:"i:1d: Ssi?dRo--iRsRPdx"Ssi?dRo--iRsRPdx
... which then starts the whole thing over again. (
Attempting to swap non-lvalue is a bunch of no-ops:
At calculates the ASCII value of
t = 10,
n-l subtracts newline minus each value of an empty list, and all the lowercase letters are just variables.)
The process continues in like fashion all the way down to:
Attempting to swap non-lvalue i:0d:"i:1d: Ssi?dRo--iRsRPdx"Ssi?dRo--iRsRPdx
When this is run,
i is now false. The ternary expression evaluates to the else branch
x--which is an lvalue. Thus, swap simply swaps the values of
x. The program then exits with no output.
(The only thing that's changed from the previous answer is using
x, which is a predefined variable, instead of
a, which is undefined if there were no command-line arguments and thus triggers a different error when
i gets down to zero.)