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.
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.