for reference, here’s what I was “planning”-I was all too aware i didn’t have time to learn a new language to actually implement it in. a pity i didn’t think to post this before the tournament results, even if it’s just pseudocode...
run(me,opponent){ //start point
notethetime()
if(me=opponent){return C}
defectbot[]=a list of primitive defectbots with a junk string value added
run5times and record results:(run(opponnent, (opponent, defectbot[i])
{
if (opponent cooperated sometimes){ if(isooponentclearlymimicbot(ooponent)){cooperate()}else{defect()}}//mimic bot is assumed to be simple and easy to identify as such, but I’m not exactly sure how i’d test this.
checktime()//if the opponent takes way too long to run against a short defect bot with barely any baggage, it’s going to have trouble with you. Defect for both your sakes.
if(opponent cooperates allways){if(opponentisclearly cooperate-bot){do I cooperate with C-bots in the hopes of cooperating with those who cooperate with C-bots or do I take advantage of the schmuck?}//a decision i really never made...
mimicbot=”....”
result=(opponent,mimicbot)
if(opponent defected{defect()}
checktime(){}//but this time, cooperate if things are taking dangerously long-MAYBE. it’s somewhat reasonable for an opponent to take a while against a mimicbot, especially if opponent is mimicbot with small epsilon. .
psychbot1.0=(”....”+mimicbot+”...”); /psychbot 1.0 sends you against mimic bot, and then does what you do. only, I get to see the final result. record(run( opponent,psychbot1.0))
checktime();-possibly in a seperate thread. depends on how quickly this whole thing goes. psychbot 1.1=”...+defectbot”. result=run(opponent, psychbot1.1); psychbot 1.1 also checks you against defect bot, like the main program. the purpose, if used, is to avoid cooperating with programs that defect on finding a “D”
if(result=C){return C;} else{return D}.
}
I find cooperation with cooperation-bot utterly insane in context; I would have predicted less than three, but a good chance of at least one. In the real world problem, or a tournament with a lot of rounds, it’s potentially worth saying that since C-bots will die off quickly (although, if enough people cooperate with them, maybe they won’t) they’re effectively unlikely enough that you can safely use your response to them as signaling for other programs, but if that’s true, then your opponent should presumably know that and throw non-trivial cases at you instead.
yeah...but I was more concerned about various TrollBots-including but not limited to HashBot, Randombot, DitherBot, cooperate-IFF you are a defect bot or cooperate bot, antimimicbot...and I considered “cooperates with C-Bot” to be extremely useless as a source of information given the unusual demographics of LessWrong while drawing up my plans.
for reference, here’s what I was “planning”-I was all too aware i didn’t have time to learn a new language to actually implement it in. a pity i didn’t think to post this before the tournament results, even if it’s just pseudocode...
run(me,opponent){ //start point notethetime() if(me=opponent){return C} defectbot[]=a list of primitive defectbots with a junk string value added run5times and record results:(run(opponnent, (opponent, defectbot[i]) { if (opponent cooperated sometimes){ if(isooponentclearlymimicbot(ooponent)){cooperate()}else{defect()}}//mimic bot is assumed to be simple and easy to identify as such, but I’m not exactly sure how i’d test this. checktime()//if the opponent takes way too long to run against a short defect bot with barely any baggage, it’s going to have trouble with you. Defect for both your sakes.
if(opponent cooperates allways){if(opponentisclearly cooperate-bot){do I cooperate with C-bots in the hopes of cooperating with those who cooperate with C-bots or do I take advantage of the schmuck?}//a decision i really never made...
mimicbot=”....” result=(opponent,mimicbot) if(opponent defected{defect()} checktime(){}//but this time, cooperate if things are taking dangerously long-MAYBE. it’s somewhat reasonable for an opponent to take a while against a mimicbot, especially if opponent is mimicbot with small epsilon. .
psychbot1.0=(”....”+mimicbot+”...”); /psychbot 1.0 sends you against mimic bot, and then does what you do. only, I get to see the final result.
record(run( opponent,psychbot1.0))
checktime();-possibly in a seperate thread. depends on how quickly this whole thing goes.
psychbot 1.1=”...+defectbot”.
result=run(opponent, psychbot1.1); psychbot 1.1 also checks you against defect bot, like the main program. the purpose, if used, is to avoid cooperating with programs that defect on finding a “D” if(result=C){return C;} else{return D}. }
}
Yeah. pseudocode. for java, not lisp.
edit: clarified a few things in the intro.
I find cooperation with cooperation-bot utterly insane in context; I would have predicted less than three, but a good chance of at least one. In the real world problem, or a tournament with a lot of rounds, it’s potentially worth saying that since C-bots will die off quickly (although, if enough people cooperate with them, maybe they won’t) they’re effectively unlikely enough that you can safely use your response to them as signaling for other programs, but if that’s true, then your opponent should presumably know that and throw non-trivial cases at you instead.
yeah...but I was more concerned about various TrollBots-including but not limited to HashBot, Randombot, DitherBot, cooperate-IFF you are a defect bot or cooperate bot, antimimicbot...and I considered “cooperates with C-Bot” to be extremely useless as a source of information given the unusual demographics of LessWrong while drawing up my plans.