\$\begingroup\$
\$\endgroup\$
11
You are to write a program that will output source code that is
- Larger than the original program (character wise)
- Will print another program larger than itself when run (i.e. the new program is also a valid answer to this challenge) indefinitely
This is code-golf, so shortest answer wins.
DialFrost
5,1892 gold badges15 silver badges58 bronze badges
asked Feb 23, 2014 at 2:43
Christopher King
7,3436 gold badges37 silver badges66 bronze badges
63 Answers 63
\$\begingroup\$
\$\endgroup\$
DipDup, 12 bytes
[[_^!]:_:]_:
The TIO link is the DipDup interpreter written in Haskell.
Based on my DipDup quine: [_:]_:. [_^!]: converts a block [abc] to [[abc]_^!], which is equivalent to [abc] but longer.
This outputs [[_^!]:_:][_^!]:_:. After that, [abc]abc becomes [[abc]_^!][abc]_^! in each step.
answered May 5, 2022 at 7:43
alephalpha
51.9k7 gold badges75 silver badges196 bronze badges
\$\begingroup\$
\$\endgroup\$
Python 2, 31 bytes
s='s=%r;print s%%s*2;';exec s%s
the next iterations are:
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
# ------------------------------------
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
# -------------------------------------
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
s='s=%r;print s%%s*2;';print s%s*2;s='s=%r;print s%%s*2;';print s%s*2;
# ------------
...
Python 3, 33 bytes
a='a=%r;print(a%%a*2);';exec(a%a)
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
# ------------------------------------
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
# -------------------------------------
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
a='a=%r;print(a%%a*2);';print(a%a*2);a='a=%r;print(a%%a*2);';print(a%a*2);
# ------------
...
\$\begingroup\$
\$\endgroup\$
JavaScript, 33 bytes (27 if alert)
f=_=>console.log(`f=${f};f(f())`)
Try it:
console.log('First execution');
f=_=>console.log(`f=${f};f(f())`)
f();
console.log('After prev execution');
f=_=>console.log(`f=${f};f(f())`);f(f())
console.log('After prev execution');
f=_=>console.log(`f=${f};f(f())`);f(f())
f=_=>console.log(`f=${f};f(f())`);f(f())
console.log('After prev execution');
f=_=>console.log(`f=${f};f(f())`);f(f())
f=_=>console.log(`f=${f};f(f())`);f(f())
f=_=>console.log(`f=${f};f(f())`);f(f())
f=_=>console.log(`f=${f};f(f())`);f(f())
//...
answered Jan 27, 2023 at 11:18
EzioMercer
1,4723 silver badges22 bronze badges
:^)\$\endgroup\$