Most of these suggestions are okay, but don’t move away from Lisp. A very restricted Scheme (e.g. one way to set variables, one looping construct (I really like foldl, as N shows), etc.) would be good; the lexical scoping and general immutability make it one of the best Lisps for our purposes.
BloodyShrimp
Forget sanity—if your opponent fails to play, the most you can get is one point. Hawkbot is awful.
I agree, my fellow top-ranking-non-source-ignoring player. Saying “nobody could do any better than randomness in this tournament” is strictly true but a bit misleading; the tiny, defect-happy pool with almost 20% random players (the top 3 and also G; he just obfuscated his somewhat) didn’t provide a very favorable structure for more intelligent bots to intelligently navigate, but there was still certainly some navigation.
I’m pretty pleased with how my bot performed; it never got deterministically CD’d and most of its nonrandom mutual defections were against bots who had some unusual trigger condition for defecting based on source composition, not performance, or had very confused performance triggers (e.g. O—why would you want to play your opponent’s anti-defectbot move when you determine they cooperate with cooperatebot?). Some of its mutual defections were certainly due to my detect-size-changes exploit, but so were its many DCs.
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.
Hmm, three way tie for fourth place.
I thought So8res was trying to set up subtle vulnerabilities for the mimicbot clique to exploit himself! My own exploit (store their size and see if it changes; if so defect, on the assumption that most who change their size will only change it once; play small-n mimicbot so you can induce cooperation on their turn and when the exploit doesn’t fire at all) seems to have cut the problem a little cleaner, picking up more nonrandom DCs. I had essentially thought of this exploit in the first few days of the contest, but I had thought it would set me up for a few too many CDs (ended up getting one, but it was random) until So8res posted his tutorial, at which point it seemed like there’d be enough paranoid mimicbotters choosing a random rank on their first move (for example) and leaving the rank-choosing machinery out of their later versions for my exploit to be profitable…
...and instead my DCs were on non-quiney bots which ran simple bot tests, like the one in the contest rules’ example. I did anticipate I’d pick these up, but I didn’t think there’d be so many of them.
Anyway, this was good fun. Thanks for hosting, AlexMennen, and thanks for playing, everyone else.
I don’t think this is quite where the analogy was. The brain’s information-processing features you describe seem to be analogous to the radio’s volume and clarity… it seems Eagleman was trying to compare the radio’s content not to the brain’s content, but to consciousness or something. At least, that’s the best steelmanning attempt I’ve got.
I’d guess the quotee wouldn’t call generic space opera “science fiction” either. I sure wouldn’t, myself.
More specifically, in chapter 56:
Kill her and then bring her back, came the next suggestion. Use Frigideiro to cool Bellatrix down to the point where her brain activity stops, then warm her up afterward using Thermos, just like people who fall into very cold water can be successfully revived half-an-hour later without noticeable brain damage. Harry considered this. Bellatrix might not survive in her debilitated state. And it might not stop Death from seeing her. And he’d have trouble carrying a cold unconscious Bellatrix very far. And Harry couldn’t remember the research on which exact body temperature was supposed to be nonfatal but temporarily-brain-halting.
He forgot to get his time-turner unlocked, but he remembered to look this up, evidently.
He said he didn’t want to use sleep, since the argument is only a lower bound on the amount of time it takes.
As written, this doesn’t work; print only takes one printee argument, with other optional arguments.
But it’ll only be believable if AlexMennen is involved with that contest as well.
I’d tentatively object. The 10-second timeout rule becomes too much of a problem if your program can’t guard against it, and changing the rules so that failure to play a real move in time = defect would also make static analysis a major pain.
This problem is a social engineering problem by construction. The game won’t go to the bot with the cleverest code, it will go to the bot that best guesses the composition of the playing field.
True. I just think things are more interesting if you let that composition grow out of everyone’s isolated ideas instead of gardening it ahead of time. Bearing your judge quote in mind, I should have said something earlier.
Argh, this comment is irritating… even beyond the subtle mistakes (for example, “it’s essential that outsiders don’t figure out what rank of MimicBot you’re running”… if you use even a non-obfuscated simple counter, you’re pretty safe, because they’ll see it as n on their turn and n-1 on your turn, and their response to this number is the same in either case).
While I do somewhat like the fact that my MimicBot now is marginally less likely to be exploited by a predetermined-specific-n exploiter, it’s not worth how many of the key insights into the problem have now been given away for free! Now we’ll get a more homogenous, less interesting field.
If it turns out you really have some fiendishly clever way to exploit the entire MimicBot clique you just ensured, I’ll half-forgive you when you win the contest, but that does not seem likely.
There are some interesting insights left you haven’t given away, but I beg anyone else who thinks of them to keep them to their self until after the contest.
Your summary seems pretty accurate. I don’t think there were many programming errors outside of P’s meltdown, though. Also, as has been touched upon elsewhere in these comments, some of the failures to maximally exploit simple bots were necessary side effects of the attempts to trick complex bots, not just failures to anticipate there being a significant number of simple bots at all. (Sort of a quantitative instead of qualitative prediction mistake—we just thought there’d be more complex bots than simple bots).
One clue towards the general simplicity of the field is the generally atrocious formatting (e.g. close-parens on their own lines)--not many people seem to have had too much experience with Lisp, let alone Lisp projects as complex as this game can get. That’s a shame, but it’s not like any non-Lisp languages are remotely suitable for the kind of source analysis we all wanted to see in this game.