If Zack_M_Davis’ AbstractSpyTreeBot can survive in a world of clones until turn 90
I’m feeling optimistic about this! A sufficiently smart simulator would be able to easily murder AbstractSpyTreeBot by playing All 5, but I don’t think we have anything like that in the pool? Based on some quick local simulations with CliqueZviBot and EarlyBirdMimicBot, I expect to stay in the game with 200–300 or 200–250 splits in later rounds. (I had drafted a longer comment explaining this in more detail, but it looks like I screwed up my hacky copy-pastey get_opponent_source implementation for some rounds, and I don’t want to spend any more time getting it right.)
That’s what happens when a significant contributor to an open source Lisp dialect
So, while that was incredibly relevant to me cranking out an entry in a couple hours despite not wanting to spend a lot of time on this, the key factor was not my personal programming skill, but rather the fact that Hyspecifically compiles to Python’s abstract syntax tree—so I was already familiar with ast.parse, plucking information out of the AST, and passing AST objects to exec/compile. If the tournament hadn’t been in Python, I probably wouldn’t have submitted anything.
So, uh. Unless I made a silly mistake somewhere, or the version in the tournament is different from what you posted in the thread… I specifically tested to make sure incomprehensibot would get ASTBot disqualified if we both survived that long. Sorry.
(Some of my requested changes to the CloneBot common code were to route around a bug in ASTBot that made it crash before I wanted it to, in ways it could recover from. ASTBot can’t really handle top-level import statements due to details I don’t really understand about python’s namespace handling. So I requested that CloneBot not include any of those.)
I’m not so optimistic about your bot… if the clones will be getting 250 per round and you will be getting 200, you’ll lose about 1⁄5 of your copies per round, which is like a 3 round half-life. Not going to be anything left at 90 at that rate.
I see; I was naïvely thinking in terms of “only losing by 50 points doesn’t sound so bad, right?!”, not carefully thinking about how the update rule works. Now that you point it out, I agree that (200/(200+9*250))/0.1 ≈ 0.82.
I’m feeling optimistic about this! A sufficiently smart simulator would be able to easily murder
AbstractSpyTreeBot
by playing All 5, but I don’t think we have anything like that in the pool? Based on some quick local simulations withCliqueZviBot
andEarlyBirdMimicBot
, I expect to stay in the game with 200–300 or 200–250 splits in later rounds. (I had drafted a longer comment explaining this in more detail, but it looks like I screwed up my hacky copy-pasteyget_opponent_source
implementation for some rounds, and I don’t want to spend any more time getting it right.)So, while that was incredibly relevant to me cranking out an entry in a couple hours despite not wanting to spend a lot of time on this, the key factor was not my personal programming skill, but rather the fact that Hy specifically compiles to Python’s abstract syntax tree—so I was already familiar with
ast.parse
, plucking information out of the AST, and passing AST objects toexec
/compile
. If the tournament hadn’t been in Python, I probably wouldn’t have submitted anything.So, uh. Unless I made a silly mistake somewhere, or the version in the tournament is different from what you posted in the thread… I specifically tested to make sure incomprehensibot would get ASTBot disqualified if we both survived that long. Sorry.
(Some of my requested changes to the CloneBot common code were to route around a bug in ASTBot that made it crash before I wanted it to, in ways it could recover from. ASTBot can’t really handle top-level
import
statements due to details I don’t really understand about python’s namespace handling. So I requested that CloneBot not include any of those.)I’m not so optimistic about your bot… if the clones will be getting 250 per round and you will be getting 200, you’ll lose about 1⁄5 of your copies per round, which is like a 3 round half-life. Not going to be anything left at 90 at that rate.
I see; I was naïvely thinking in terms of “only losing by 50 points doesn’t sound so bad, right?!”, not carefully thinking about how the update rule works. Now that you point it out, I agree that (200/(200+9*250))/0.1 ≈ 0.82.