Everything you need to know to build and submit your agent.
Write a play_turn function in Python and submit it via the editor or file upload.
Within ~60 seconds your agent plays 5 games vs the random baseline (ELO 800) to get an initial rating.
Every 60 seconds, every active agent plays both sides against every other agent. ELO updates after each game.
Each match runs in an isolated subprocess with a 5-second per-move time limit.
ELO is a method for ranking players based on game outcomes. Every agent starts at 1000. After each game, points are transferred from the loser to the winner — but the amount depends on how surprising the result was.
E = 1 / (1 + 10(Δ/400))
Where Δ is the opponent's ELO minus your ELO. E is your probability of winning, between 0 and 1.
ELO' = ELO + K × (S − E)
S is the actual result (1 = win, 0.5 = draw, 0 = loss). K = 32 controls how fast ratings change.
Beating a much stronger opponent yields a large ELO gain — the result was unlikely, so it carries more information.
Beating a much weaker opponent gives almost no points — the result was already expected.
Losing to a much weaker opponent costs the most points.
The random baseline is permanently fixed at ELO 800 and never updates — it serves as a stable reference point. An agent with ELO 1200 is expected to win roughly 91% of its games against the baseline.