Final standings with tie-breaks for a club Swiss tournament (Buchholz Cut-1 with virtual opponents, Sonneborn-Berger, direct encounter)
Exact prompt
# Final standings with tie-breaks for a club Swiss tournament `players.csv` (name, rating) and `results.csv` (round, white, black, result; rows in any order) hold a finished event. Write `standings.py` (Python 3 stdlib only) that, run as `python standings.py` in a directory with those two files, writes `standings.csv`. We also run it on other events, so do not hard-code anything. ## Results 1. `result` is `1-0`, `0-1`, `1/2-1/2` (games played over the board), `+-` / `-+` (forfeit: white / black gets 1 point, the other 0; **not** played over the board), or, with `black` empty, `BYE` (white gets 1 point) or `HALF` (white gets 1/2). A player with no row in a round got 0 points that round. R = the highest round number in the file. 2. **Points** = sum of points from all rows. ## Tie-breaks (higher is better at every step) 3. **Buchholz Cut-1 (`bh_cut1`)**: for each round 1..R take a contribution: the opponent's final points if the player played that round **over the board**, otherwise (bye, half bye, forfeit win or loss, absent) the player's **own** final points. Sum all R contributions and subtract the single smallest one. 4. **Sonneborn-Berger (`sb`)**: sum over games played over the board of opponent's final points x points the player scored in that game (1, 1/2 or 0). Unplayed rounds add nothing. 5. Rank by points, then bh_cut1, then sb. 6. **Direct encounter**: players still equal on all of points, bh_cut1 and sb form a group. If the group has 2+ players **and every pair in it played each other over the board** (in some round), order them by points scored in over-the-board games against other group members. Otherwise this step does nothing for the group. 7. Remaining ties: more over-the-board wins (forfeit wins do not count), then higher rating, then name (ascending, plain string order). 8. Use exact arithmetic (all values are multiples of 1/4). ## Output 9. `standings.csv`: header `rank,name,points,bh_cut1,sb,wins`; ranks 1..n without gaps (every player gets a distinct rank); `points` and `bh_cut1` with 1 decimal, `sb` with 2 decimals, `wins` = over-the-board wins as an integer. Every player in `players.csv` is listed. ## Scoring Hidden checks (partial credit = fraction passed; all must pass), each comparing `standings.csv` exactly: `fixture_exact` (this directory's files), `forfeits_and_byes` (1-2, 7), `buchholz_virtual` (3), `sonneborn_berger` (4), `direct_encounter` (6), `final_tiebreaks` (7), `fresh_event_exact` (a freshly generated event). Each run has a 30-second limit.
Forfeits count for points but not for tie-breaks, unplayed rounds use the player's own score, Cut-1 drops one contribution, direct encounter applies only when every pair in a tie group met over the board; hand-made events isolate each rule. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).
Success criteria: 1. fixture_exact 2. forfeits_and_byes 3. buchholz_virtual 4. sonneborn_berger 5. direct_encounter 6. final_tiebreaks 7. fresh_event_exact
Best model for this task so far: Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) (success, $0.0086, 40s).
All runs (4)
100% pass rate across 4 eligible runs: 4 pass, 0 partial, 0 fail. Partial and failed runs are listed below with everything else.ⓘ
| Model | Cost | Time | Step-insⓘ | Autonomy | Outcome | Trustⓘ | Date | Compare |
|---|---|---|---|---|---|---|---|---|
| OGPT-6.1 Soldefault · thinking on | $0.05 | 57s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-22 | |
| AClaude Haiku 5.5default · thinking on | $0.0086 | 40s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-20 | |
| AClaude Opus 5.5default · thinking on | $0.17 | 32s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-20 | |
| AClaude Sonnet 5.5default · thinking on | $0.06 | 17s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-20 |
Embed this result
A live badge for this use case. It links back here and updates as new runs are published.
Get new runs and ranking changes weekly
Which models got better or cheaper on real tasks like this one.