Make the city flow
You have 105 minutes to modify one file. The engine handles amber phases, minimum timings, and safety; you decide which axis gets a green light at every junction.
One function
def control(state):
return {
"A1": "NS_GREEN",
"A2": "EW_GREEN",
}State contains queues, waiting time, current phase, phase age, and road occupancy. You may keep memory between ticks within one map and use the standard library and NumPy. Each map starts a fresh process, so memory never carries between maps.
Beat the baseline
Each map awards between 1 and 25,000 points: 10,000 for matching the baseline and 25,000 for reaching or beating the gold target. Above the baseline cost, the score falls in proportion to cost. Between baseline and gold, progress is squared: getting close to gold matters much more than a small improvement.
During the challenge you see a provisional score capped at 25,000 overall: the geometric mean of the three public maps contributes 20%, and the geometric mean of six private validation maps contributes 80%. You see only the private aggregate, never private per-map results.
When submissions close, each team’s best provisional submission—not necessarily its latest—runs once on twelve sealed final maps grouped into six families. Each family contributes the lower of its two map scores, and the six family results are combined geometrically. That result, with the same 20/80 weighting, determines the final leaderboard.
Test, save, submit
python run.py
python submit.py login MLG-XXXX
python submit.pyEach team may have up to 20 submissions accepted during the 105 minutes, with one minute between submissions. Resubmitting the exact same controller returns the existing submission without consuming an attempt or cooldown. Controller failures do consume the accepted attempt.