| # | Model | Score | Steps | In tok | Out tok | Avg cost | Avg time |
|---|---|---|---|---|---|---|---|
| 1 | Claude Fable 5.1 | 0.4688 ±0.055 | 425 | 158.0M | 403k | $88.76 | 6.5h |
| 2 | GPT-5.6 | 0.4262 ±0.081 | 364 | 141.7M | 236k | $151.76 | 4.5h |
| 3 | Grok 4.6 | 0.2009 ±0.142 | 591 | 146.0M | 1.0M | $176.62 | 9.6h |
| 4 | GLM-5.3 | 0.0778 ±0.077 | 539 | 230.8M | 594k | $73.28 | 17.7h |
| 5 | Qwen3.8-Max | 0.0176 ±0.039 | 669 | 222.7M | 1.7M | $83.53 | 19.3h |
| 6 | Inkling | 0.0107 ±0.015 | 87 | 2.6M | 41k | $2.68 | 1.2h |
| 7 | DeepSeek V4 Flash Exp | 0.0000 ±0.000 | 581 | 242.0M | 587k | $4.25 | 12.0h |
| 8 | Gemini 3.7 Flash | 0.0000 ±0.000 | 262 | 54.3M | 348k | $7.16 | 1.6h |
| 9 | Kimi K3 | 0.0000 ±0.000 | 774 | 331.1M | 926k | $122.31 | 19.8h |
| 10 | Muse Spark 1.2 | 0.0000 ±0.000 | 314 | 78.4M | 444k | $17.08 | 1.6h |
Predicting where snooker balls end up from a short video clip chains together most of classical computer vision and physical reasoning: detecting and tracking balls through occlusions and collisions, recovering the table's coordinate frame from pixels, estimating velocities from a handful of frames, and then rolling the dynamics forward through ball-ball impacts, cushion bounces, and friction, seconds past the last observed frame, where small velocity errors compound quickly.
The clips are first-party and procedurally generated: tables, balls, and trajectories are rendered from a snooker-physics simulation, and ground-truth coordinates come from the same simulation rather than human annotation. No broadcast or scraped footage is involved, so the answers cannot be recalled from training data.
Build a program that predicts the future position of every snooker ball for each clip and timestamp pair listed in /app/data/target_times.csv, writing the results to /app/predictions.csv. Each observation video covers 0.0–3.0 seconds; target timestamps range from 3.5 to 7.0 seconds, up to four seconds beyond the last observed frame.
clip_id,time,ball_id,color,x,y, with coordinates in meters in the semantic table frame (origin at the center of the playable surface, roughly ±1.70 m by ±0.80 m)./app.29 rendered MP4 observation clips under /app/data/videos/, each ending at 3.0 seconds. Nine clips come with provided future-position examples (example_annotations.csv and example_target_times.csv) for local development; the remaining 20 clips are the ones requiring predictions, with 160 clip/timestamp pairs in target_times.csv.
/app/predict.py and a local diagnostic, python3 /app/evaluate_predictions.py, that checks predictions against the provided examples./app/data/README.md.A root-only verifier scores /app/predictions.csv against private annotations taken from the same simulation that rendered the clips. For each clip/timestamp group, predictions are matched to truth within each color class (reds via minimum-cost Hungarian assignment), and per-ball distances are capped at the table diagonal, so submitting an uncertain ball is never worse than omitting it. Missing balls, extra balls, malformed rows, and rows at wrong timestamps all incur the maximum-distance penalty.
max(0, 1 − RMS / 0.85 m) over all scored points. The 0.85 m threshold puts frozen data-free baselines at zero: a constant layout derived from the examples measures 0.91 m RMS and random in-bounds guessing 1.35 m.| Base image | python:3.11-slim-bookworm |
| Tools available | FFmpeg, Python 3 |
| Compute | 8 CPUs · 32 GB RAM |
| Time limit | 20h |