Earliest-arrival journey planner over a timetable (minimum change times, directed footpaths never chained, trip limit, after-midnight times)
Exact prompt
# Earliest-arrival journey planner with change times and footpaths `transit.py` plans trips over our city's offline timetable (`stops.csv`, `timetable.csv`, `footpaths.csv` in a directory). The draft only finds direct trips. Rewrite it (Python 3 stdlib only) so that `Network(directory).query(src, dst, start, max_trips)` follows these rules exactly. ## Data 1. `stops.csv`: `stop,min_change` (seconds). `timetable.csv`: `trip_id,seq,stop,arr,dep`; a trip's stops are visited in increasing `seq` (rows may be in any order). Times are `HH:MM:SS` and hours may be 24 or more (after midnight of the same service day). `footpaths.csv`: `from,to,seconds`, **directed**; if a pair appears several times the smallest time counts; rows with `from == to` are ignored. ## Journeys 2. You are at `src` at time `start` (`HH:MM:SS`). You may **board** a trip at a stop at that row's `dep` if you are ready there at or before `dep`, ride it, and **alight** at any later stop of that trip at its `arr`. 3. **Ready times:** at `src` you are ready at `start`. After alighting at stop s at time a you are ready to board **another** trip at s at `a + min_change[s]`. After walking a footpath you are ready at the arrival time with no change time. 4. **Footpaths** may be walked from `src` before the first trip, after alighting from any trip, and to reach `dst` at the end, but **never two footpaths in a row** (no walking from a stop you reached on foot). 5. `max_trips` (integer >= 0) is the maximum number of trips boarded; with 0 only `src == dst` or a single footpath `src -> dst` works. 6. Reaching `dst` means alighting there or walking a footpath into it (no change time is added at the end). If `src == dst` the answer is `(start, 0)`. 7. **Answer:** `(arrival, trips)` with the earliest possible arrival at `dst` formatted `HH:MM:SS` (hours zero-padded to at least 2 digits, may be >= 24), and among journeys with that arrival the smallest number of trips; `None` if `dst` cannot be reached. An unknown stop name (not in `stops.csv`) raises `KeyError`. 8. **Speed:** on the network in this directory, building the `Network` and answering 400 random queries with `max_trips` up to 4 must take under 20 seconds in total on our shared test box. ## Scoring Hidden check groups (partial credit = fraction passed; all must pass), all on exact answers: `direct_and_parsing` (1-2, 7 on a small hand-made network), `change_times` (3), `footpath_rules` (3-4), `max_trips_and_ties` (5, 7), `after_midnight` (1, 7), `unreachable_and_errors` (6-7), `city_queries` (150 queries on this directory's network), `fresh_city_queries` (150 queries on a freshly generated network of the same kind), `speed` (8).
Change time applies only between trips at a stop, not after walking; no two footpaths in a row; trip-count limit with fewest-trips tie-break; hours >= 24. A hand-made network pins each rule, then 300 city queries on two networks. 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. direct_and_parsing 2. change_times 3. footpath_rules 4. max_trips_and_ties 5. after_midnight 6. unreachable_and_errors 7. city_queries 8. fresh_city_queries 9. speed (400 queries < 20 s)
Best model for this task so far: Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) (success, $0.02, 2m).
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.07 | 1m | 0 | Fully autonomous | pass | Trust 80% | 2026-10-22 | |
| AClaude Haiku 5.5default · thinking on | $0.02 | 2m | 0 | Fully autonomous | pass | Trust 80% | 2026-10-20 | |
| AClaude Opus 5.5default · thinking on | $0.25 | 1m | 0 | Fully autonomous | pass | Trust 80% | 2026-10-20 | |
| AClaude Sonnet 5.5default · thinking on | $0.07 | 25s | 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.