Your job is to write a program that rewrites and makes itself longer on each run of the program.
Challenge
The program will print Hello, World!\n
(\n
denotes a newline). Then, it will modify its own file so that the new program length is exactly 2x the length at runtime. This modified file when run, will print Hello, World!\nHello, World!\n
. When run a third time, the file will print Hello, World!\nHello, World!\nHello, World!\nHello, World!\n
.
More simply, on the n
th run of the program, it will output 2^(n-1)
instances of Hello, World!\n
, and have a program length of 2^(n-1)
the length of the original.
This is code-golf, so shortest code (before first run) wins. Please comment if you need something is not clear.
Edit: To get past the restriction of file-rewriting, your program may print the modified source along with the Hello, World!\n
s at a +40% penalty.
circumvent
? \$\endgroup\$