Hmm. Considering the heavy amount of random strategies, it seems like it might be worth it iterating the tournament several more times and summing the point totals, particularly since C(one of the randoms) is above the three way tie at 4th place between G, K and N by only two points, and A and C also have a 2 point difference despite having functionally identical strategies (50% random Cooperate or Defect.) I feel like that implies standard deviations may make analysis of the results premature.
Nonetheless, analyzing is fun, so I’ll do a little bit anyway on the fourth placers.
K appears to be functionally identical to a Defect bot. It has more complicated code, but that code never cooperated. (Side note: randomly, in this run, Margaret Sy’s winning random favor defection at 80% strategy only cooperated with this bot and defected against all other bots.)
Also G and N, despite being in 4th place, didn’t actually seem to take successfully advantage of any of the 3 pseduosimplistic cooperate bots in this run (H, I, J—Simulate something, then cooperate regardless.) by defecting against them, which would seem to be one of the key ways a mind reader could try to score points for a win. I would guess the ‘pretend to be thinking’ purpose of the simulate call made them look too complicated to exploit in that manner, but I’m not that familiar with the programming language, so perhaps not? (Not that being H,I or J’s type of bot was sufficient to win. Their points are low enough that it seems unlikely that they would surge ahead even after repetition.)
Anyway, thank you for running this! It was a neat idea and as above, I had fun looking at the results.
Edit: I realized a pronoun above was unclear and replaced it with nouns.
I think that kind of deviation was probably a large part of the motivation for those who submitted random-playing bots, since the contest rules specified one round.
I haven’t looked too closely at K, nor ran any tests, but I have a slight suspicion it sometimes cooperated in simulation, despite always defecting on its turn.
As for the cooperatebots, there were multiple reasons I didn’t write N to exploit them, but not source complexity—they don’t even do anything besides cooperate; the middle term is just the function’s argument list.
I checked the behavior of all the bots that cooperated with K, and all but two (T and Q) would have always cooperated with a defectBot. Specifically the defect bot:
(lambda (opp) 'D)
Sometimes they cooperated for different reasons. For example, U cooperates with K because it has “quine” in the code, while it cooperates with defectBot because it doesn’t have “quine”, “eval”, or “thread” in it.
Q, of course, acts randomly. T is the only one that doesn’t cooperate with defectBot but was tricked by K into cooperating. Though I’m having trouble figuring out why because I’m not sure what T is doing.
Anyway, it looks like K is reasonable proxy for how defectBot would have done here.
T was supposed to do a bit more than it did, but it had some portability bugs so I hastily lobotomized it. All it’s supposed to do now is simulate the opponent twice against an obfuscated defectbot, defect if it cooperates both times, otherwise play mimicbot. I didn’t have the time to add some of the obvious safeguards. I’m not sure if K is exploiting me or just got lucky, but at a glance, what it might be doing is checking whether the passed-in bot can generate a perfect quine of itself, and cooperating only then. That would be pretty ingenious, since typically a quine chain will go “original—functional copy—identical copy—identical copy”, etc.
You’re right. K is a MimicBot with an additional check for proper quining. I primarily intended it to cause defection against CooperateBots, RandomBots, and others that don’t simulate their opponents meaningfully. I expected a lot more MimicBot variants and mutual cooperations...
True. I’m not saying that the random people did a poor job of selecting strategies, but Error was depressed that random behavior dominated. My and Luke_A_Somers’s points appears to be that the amount randomness dominates by, if it is dominant, would be easier to determine with more rounds.
Hmm. Considering the heavy amount of random strategies, it seems like it might be worth it iterating the tournament several more times and summing the point totals, particularly since C(one of the randoms) is above the three way tie at 4th place between G, K and N by only two points, and A and C also have a 2 point difference despite having functionally identical strategies (50% random Cooperate or Defect.) I feel like that implies standard deviations may make analysis of the results premature.
Nonetheless, analyzing is fun, so I’ll do a little bit anyway on the fourth placers.
K appears to be functionally identical to a Defect bot. It has more complicated code, but that code never cooperated. (Side note: randomly, in this run, Margaret Sy’s winning random favor defection at 80% strategy only cooperated with this bot and defected against all other bots.)
Also G and N, despite being in 4th place, didn’t actually seem to take successfully advantage of any of the 3 pseduosimplistic cooperate bots in this run (H, I, J—Simulate something, then cooperate regardless.) by defecting against them, which would seem to be one of the key ways a mind reader could try to score points for a win. I would guess the ‘pretend to be thinking’ purpose of the simulate call made them look too complicated to exploit in that manner, but I’m not that familiar with the programming language, so perhaps not? (Not that being H,I or J’s type of bot was sufficient to win. Their points are low enough that it seems unlikely that they would surge ahead even after repetition.)
Anyway, thank you for running this! It was a neat idea and as above, I had fun looking at the results.
Edit: I realized a pronoun above was unclear and replaced it with nouns.
I think that kind of deviation was probably a large part of the motivation for those who submitted random-playing bots, since the contest rules specified one round.
I haven’t looked too closely at K, nor ran any tests, but I have a slight suspicion it sometimes cooperated in simulation, despite always defecting on its turn.
As for the cooperatebots, there were multiple reasons I didn’t write N to exploit them, but not source complexity—they don’t even do anything besides cooperate; the middle term is just the function’s argument list.
I checked the behavior of all the bots that cooperated with K, and all but two (T and Q) would have always cooperated with a defectBot. Specifically the defect bot:
Sometimes they cooperated for different reasons. For example, U cooperates with K because it has “quine” in the code, while it cooperates with defectBot because it doesn’t have “quine”, “eval”, or “thread” in it.
Q, of course, acts randomly. T is the only one that doesn’t cooperate with defectBot but was tricked by K into cooperating. Though I’m having trouble figuring out why because I’m not sure what T is doing.
Anyway, it looks like K is reasonable proxy for how defectBot would have done here.
T was supposed to do a bit more than it did, but it had some portability bugs so I hastily lobotomized it. All it’s supposed to do now is simulate the opponent twice against an obfuscated defectbot, defect if it cooperates both times, otherwise play mimicbot. I didn’t have the time to add some of the obvious safeguards. I’m not sure if K is exploiting me or just got lucky, but at a glance, what it might be doing is checking whether the passed-in bot can generate a perfect quine of itself, and cooperating only then. That would be pretty ingenious, since typically a quine chain will go “original—functional copy—identical copy—identical copy”, etc.
You’re right. K is a MimicBot with an additional check for proper quining. I primarily intended it to cause defection against CooperateBots, RandomBots, and others that don’t simulate their opponents meaningfully. I expected a lot more MimicBot variants and mutual cooperations...
True. I’m not saying that the random people did a poor job of selecting strategies, but Error was depressed that random behavior dominated. My and Luke_A_Somers’s points appears to be that the amount randomness dominates by, if it is dominant, would be easier to determine with more rounds.