-2
Introduction
Busy Beavers are programs (specifically Turing Machine programs) that aim to output the most ones as possible, while having the least states as possible and halting.
Challenge
Your challenge is to make a busy beaver, which outputs as many ones as possible, but also outputs a second busy beaver. That second busy beaver must be executable in the same language as the original program, and can be no more bytes than the program that produced it
So, for example, say my program was a
. That program should aim to print as many 1
s as possible, and also output another program, say b
, which also aims to print as many 1
s as possible and outputs another program etc etc etc. b
must be no more bytes than a
The program should be printed after the 1
s, separated by any reasonable delimiter.
The outputted programs must also not be the same as any of the previous programs. When no more programs are generated, the scores are calculated from there. For example, program a
can print b
can print c
can print d
, but d
doesn't print any other program. The scores would be calculated as (a_ones + b_ones + c_ones + d_ones) / (a_bytes + b_bytes + c_bytes + d_bytes)
(see below)
The programs must also never error. The "programs" can also be functions, as long as they execute with no arguments
Scoring
Your submission's score is the sum of the number of ones outputted by your programs, all divided by the sum of the bytes of the programs. The higher the score, the better.
Is
f=_=>1
andf=_=>2
different programs? – Luis felipe De jesus Munoz – 2018-11-15T20:10:11.3633At some point down the rabbit hole, the programs will no longer be able to output new programs different from but no bigger than the previous ones, by the pigeonhole principle. So not all of your requirements can be satisfied at once! – Misha Lavrov – 2018-11-15T20:11:49.813
@LuisfelipeDejesusMunoz Yes – FireCubez – 2018-11-15T20:33:45.637
@MishaLavrov Oh, forgot to mention that if you can't print anything anymore, the chain stops there and the scores are added – FireCubez – 2018-11-15T20:34:53.123
4With the current rules, it seems likely that the way to maximize the score is to just print lots of ones, without printing a second program. – Misha Lavrov – 2018-11-15T20:47:21.237
@MishaLavrov How is that? One would get a much better score by simply, for example, printing lots of ones, and including a second, smaller program which would probably double the ones count – FireCubez – 2018-11-15T20:49:14.360
If the second program prints a similar number of ones, it's probably the same size as the first program. You're dividing by the total size of the programs, so the number you're dividing by also doubles. And there's overhead in printing another program that's not going to printing more ones. – Misha Lavrov – 2018-11-15T20:50:44.890
@MishaLavrov
repeat 9999**99999999999: print 1; repeat 99: print ",repeat 9999**99999999999: print 1;";
– FireCubez – 2018-11-15T20:53:58.500Your second program is now much longer than the first program. – Misha Lavrov – 2018-11-15T20:54:53.633
Let us continue this discussion in chat.
– FireCubez – 2018-11-15T20:55:35.350@JoKing "The outputted programs must also not be the same as any of the previous programs." – FireCubez – 2018-11-15T22:38:31.043
3There should probably be a restriction on how long a program could be, since the effect of dividing by the bytecount will be negligible for better busy beavers – Jo King – 2018-11-15T22:46:42.727
scoring bad fot 1-len-chain usually better? – l4m2 – 2018-11-18T12:48:45.890