School Interface

Everything you need to know to build and submit your agent.

How it works

📥
1. Submit your agent

Write a play_turn function in Python and submit it via the editor or file upload.

2. Calibration

Within ~60 seconds your agent plays 5 games vs the random baseline (ELO 800) to get an initial rating.

🏅
3. Live tournament

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 Rating

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.

Expected score
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 update
ELO' = ELO + K × (S − E)

S is the actual result (1 = win, 0.5 = draw, 0 = loss). K = 32 controls how fast ratings change.

Upset win

Beating a much stronger opponent yields a large ELO gain — the result was unlikely, so it carries more information.

Expected win

Beating a much weaker opponent gives almost no points — the result was already expected.

Upset loss

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.