The prisoner's dilemma tournament is over. There were a total of 21 entries. The winner is Margaret Sy, with a total of 39 points. 2nd and 3rd place go to rpglover64 and THE BLACK KNIGHT, with scores of 38 and 36 points respectively. There were some fairly intricate strategies in the tournament, but all three of these top scorers submitted programs that completely ignored the source code of the other player and acted randomly, with the winner having a bias towards defecting.

You can download a chart describing the outcomes here, and the source codes for the entries can be downloaded here.

I represented each submission with a single letter while running the tournament. Here is a directory of the entries, along with their scores: (some people gave me a term to refer to the player by, while others gave me a term to refer to the program. I went with whatever they gave me, and if they gave me both, I put the player first and then the program)

A: rpglover64 (38)

B: Watson Ladd (27)

c: THE BLACK KNIGHT (36)

D: skepsci (24)

E: Devin Bayer (30)

F: Billy, Mimic-- (27)

G: itaibn (34)

H: CooperateBot (24)

I: Sean Nolan (28)

J: oaz (26)

K: selbram (34)

L: Alexei (25)

M: LEmma (25)

N: BloodyShrimp (34)

O: caa (32)

P: nshepperd (25)

Q: Margaret Sy (39)

R: So8res, NateBot (33)

S: Quinn (33)

T: HonoreDB (23)

U: SlappedTogetherAtTheLastMinuteBot (20)

Ah, mutation in the "mutable state" sense. When I was doing some light experimenting with static analysis in the early days of the contest, I looked for variables storing anything involving eval (or involving another variable storing anything involving eval, etc.), and just treated (sounds like that should be "trought" or something) set! calls as define calls--another chance for a variable to become contaminated with evalness. Could you give an example of a case where set! makes things harder to analyze?

OK. Let me explain what the basic idea of my program was. The idea was to analyze the opponent's program in an attempt to answer the following question: What is the probability that I can affect the outcome of their program? Now that I've thought about this some more, this makes less sense than I initially thought; if there's a second round (and I have time to program something as complicated as this), I'm going to try the rather more sensible "How much I can I affect the probability distribution of their program's output?" But for now let's ... (read more)