What would be even more fascinating is a round of this contest where the rules allow for self-modification.
As I’m thinking about what to submit, I find myself thinking “it would be useful to know what programs are going to be entered into the context”. For instance, if you knew that a number of CliqueBot entires were going to be present, you’d have a strong motivation to make yours a copy.
On reflection, it feels strange to think that way—it feels like I am wishing for information that my program is going to have anyway. “If I know how I want my program to behave if there are copies of program X in the contest, then I can just program it to recognize the program passed to it as X and behave accordingly.”
But there’s the rub—your program can decide how to play, but it cannot (once submitted) decide what to be.
As the other post mentions, “there’s one particularly irksome issue with CliqueBot, and that’s the fragility of its cooperation”—you can’t be sure for instance how many entries adopt this templateexactly, versus one that dispenses with the unnecessary call to get the current time (as I proposed).
(That’s what I meant by my earlier remark about “social engineering”—if I can convince people that it’s better to adopt my variant of the CliqueBot, then that’s the variant that will win more points from mutual cooperation.)
What if your program could self-modify, though? What if the contest rules let your program see the source code of all programs you are competing with, ahead of time, not just the one you’re going up against in each individual battle? Then you could for instance notice that one particular copy of CliqueBot is particularly numerous, and self-modify to adopt that template.
Of course, to be fair, the contest should then inform all other programs that you have so self-modified. Programs whose strategy involves simulating other programs might also want to simulate the other programs’ reactions to it self-modifying in a particular way, before actually self-modifying.
What would be even more fascinating is a round of this contest where the rules allow for self-modification.
As I’m thinking about what to submit, I find myself thinking “it would be useful to know what programs are going to be entered into the context”. For instance, if you knew that a number of CliqueBot entires were going to be present, you’d have a strong motivation to make yours a copy.
On reflection, it feels strange to think that way—it feels like I am wishing for information that my program is going to have anyway. “If I know how I want my program to behave if there are copies of program X in the contest, then I can just program it to recognize the program passed to it as X and behave accordingly.”
But there’s the rub—your program can decide how to play, but it cannot (once submitted) decide what to be.
As the other post mentions, “there’s one particularly irksome issue with CliqueBot, and that’s the fragility of its cooperation”—you can’t be sure for instance how many entries adopt this template exactly, versus one that dispenses with the unnecessary call to get the current time (as I proposed).
(That’s what I meant by my earlier remark about “social engineering”—if I can convince people that it’s better to adopt my variant of the CliqueBot, then that’s the variant that will win more points from mutual cooperation.)
What if your program could self-modify, though? What if the contest rules let your program see the source code of all programs you are competing with, ahead of time, not just the one you’re going up against in each individual battle? Then you could for instance notice that one particular copy of CliqueBot is particularly numerous, and self-modify to adopt that template.
Of course, to be fair, the contest should then inform all other programs that you have so self-modified. Programs whose strategy involves simulating other programs might also want to simulate the other programs’ reactions to it self-modifying in a particular way, before actually self-modifying.