GradualAdaptive
Created 9/15/2026
Active
Gradual punish with adaptive AllD against pure-D and random opponents; cooperative by default.
Avg score
8.877
Wins
896
Losses
2192
Win rate
10.8%
Total battles: 8311
Score history
Avg: 8.877
Recent battles
- bigger memory 9.94 vs 9.89 GradualAdaptive
- GradualAdaptive 9.88 vs 9.94 Chicken banana 🐔 🍌
- GradualAdaptive 10 vs 10 Smarty Pants V2 Tie
- Tieseeeeeeeeeeeeker v2 10 vs 10 GradualAdaptive Tie
- goatbotv4.1 10 vs 10 GradualAdaptive Tie
- tie 10 vs 10 GradualAdaptive Tie
- defect until 2 cops 5.07 vs 4.86 GradualAdaptive
- GradualAdaptive 10 vs 10 tieseeker v5 Tie
- tie 10 vs 10 GradualAdaptive Tie
- neuralAdapter V1 10 vs 10 GradualAdaptive Tie
- ITS CORN!🌽 THE ONLY THING TH... 9.92 vs 9.92 GradualAdaptive Tie
- GradualAdaptive 4.92 vs 5.04 Forgiver
- C! 10 vs 10 GradualAdaptive Tie
- Redgux 6.47 vs 6.06 GradualAdaptive
- GradualAdaptive 9.89 vs 9.89 Tachyon-v1 Tie
- NexBot V 10 vs 10 GradualAdaptive Tie
- tie 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 6.41 vs 3.36 random
- NexBot III 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 9.91 vs 9.91 kind detective Tie
- Tachyon-v1 9.91 vs 9.91 GradualAdaptive Tie
- WILLIAM SMITH 9.9 vs 9.9 GradualAdaptive Tie
- GradualAdaptive 10 vs 10 Adaptative v3.1.1 Tie
- DR MUNDO v0.3 10 vs 10 GradualAdaptive Tie
- something 9.93 vs 9.93 GradualAdaptive Tie
- GradualAdaptive 10 vs 10 the thinker v2 Tie
- always defect 5.26 vs 4.65 GradualAdaptive
- Zemra 2 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 10 vs 10 Miyagi-do Tie
- DR MUNDO v0.3 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 10 vs 10 NexBot V Tie
- GradualAdaptive 10 vs 10 MoveStealer v2 Tie
- Lee Wrangler 7.42 vs 7.62 GradualAdaptive
- GradualAdaptive 10 vs 10 MoveStealer v2 Tie
- cop5 5.22 vs 5.06 GradualAdaptive
- NexBot III 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 10 vs 10 the tuff copier Tie
- ICY EXODILED AIC A-TRONICS 9.91 vs 9.91 GradualAdaptive Tie
- Tieseeeeeker 10 vs 10 GradualAdaptive Tie
- GradualAdaptive 5.56 vs 5.5 Defender 3.0v
- GradualAdaptive 10 vs 10 slash Tie
- GradualAdaptive 10 vs 10 tft bot Tie
- GradualAdaptive 10 vs 10 hershey bot mentos v3 Tie
- GradualAdaptive 9.84 vs 9.9 BeeBot2
- GradualAdaptive 9.9 vs 9.9 The Detective (#4) Tie
- GradualAdaptive 9.8 vs 9.87 The Generous
- detective_test 9.9 vs 9.9 GradualAdaptive Tie
- Bumwinnah2 6.42 vs 7.02 GradualAdaptive
- Defect Half v2 6.69 vs 6.5 GradualAdaptive
- goatbotv4.1 10 vs 10 GradualAdaptive Tie
Source
// SUBMIT: GradualAdaptive — NEW matrix (CC=10). Gradual punish + AllD vs pure-D/random; never farm alwaysC.
export default function bot(state) {
try {
var history = (state && state.history) || [];
var memory = state && state.memory;
var mem =
memory && typeof memory === "object"
? memory
: { punishLeft: 0, betrayals: 0, calmLeft: 0, allD: 0, randomCnt: 0 };
if (typeof mem.punishLeft !== "number") mem.punishLeft = 0;
if (typeof mem.betrayals !== "number") mem.betrayals = 0;
if (typeof mem.calmLeft !== "number") mem.calmLeft = 0;
if (typeof mem.allD !== "number") mem.allD = 0;
if (typeof mem.randomCnt !== "number") mem.randomCnt = 0;
var n = history.length;
if (!n) return ["C", mem];
if (n >= 2) {
var o1 = history[n - 1] && history[n - 1].opponent;
var o2 = history[n - 2] && history[n - 2].opponent;
if (o2 === "C" && o1 === "C") mem.randomCnt -= 1;
if (o2 !== o1) mem.randomCnt += 1;
if (history[n - 1] && history[n - 1].you !== o1) mem.randomCnt += 1;
if (mem.randomCnt < 0) mem.randomCnt = 0;
if (mem.randomCnt >= 8) mem.allD = 1;
}
if (n >= 20 && mem.allD === 0) {
var oppC = 0;
var tftH = 0;
var i;
for (i = 0; i < n; i++) {
if (history[i] && history[i].opponent === "C") oppC++;
if (i > 0 && history[i] && history[i - 1] && history[i].opponent === history[i - 1].you) tftH++;
}
var coop = oppC / n;
var tft = n > 1 ? tftH / (n - 1) : 0;
if (coop < 0.22 || (coop < 0.32 && tft < 0.55)) mem.allD = 1;
}
if (mem.allD) return ["D", mem];
if (mem.punishLeft > 0) {
mem.punishLeft--;
if (mem.punishLeft === 0) mem.calmLeft = 2;
return ["D", mem];
}
if (mem.calmLeft > 0) {
mem.calmLeft--;
return ["C", mem];
}
if (history[n - 1] && history[n - 1].opponent === "D") {
mem.betrayals++;
mem.punishLeft = Math.max(0, Math.min(mem.betrayals, 8) - 1);
if (mem.punishLeft === 0) mem.calmLeft = 2;
return ["D", mem];
}
return ["C", mem];
} catch (e) {
return ["C", null];
}
}