FA-84281 / Sports scoring and tiebreakers / Open access
Disqualified athletes listed as non-finishers · case 01
A disqualified athlete appears in the results as DNF.
ROOT CAUSE
The DQ check is missing so DQ rows fall into the DNF branch handling.
VERIFIED REPAIR
Omit DQ rows entirely.
Unsuccessful approach: Listing DQ athletes as finishers with the last place still publishes them.
Case contract
Sprint results. results rows are [name, time] where time is seconds with up to three decimals, or "DNF"/"DQ". Times are rounded up to the next hundredth for publication. Rank by rounded time then name; equal rounded times share the place and the next place is skipped (1, 2, 2, 4). DNF athletes follow the finishers in name order with place None and time "DNF"; DQ athletes are omitted. Return [place, name, time "S.hh"] rows.
Why this case matters
Result feeds publish hundredths from fully automatic timing and must rank ties consistently.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(results):
fin = []
dnf = []
for name, t in results:
if t in ('DNF', 'DQ'):
dnf.append(name)
continue
whole, _, frac = t.partition('.')
thous = int(whole) * 1000 + int((frac + '000')[:3])
hund = -(-thous // 10)
fin.append((hund, name))
fin.sort()
out = []
for i, (h, name) in enumerate(fin):
place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]
out.append([place, name, '%d.%02d' % (h // 100, h % 100)])
for name in sorted(dnf):
out.append([None, name, 'DNF'])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Eli', '10.3'],
['Ade', '10.334'],
['Dee', '10.350'],
['Cy', '10.334'],
['Bo', 'DQ'],
['Fay', '10.319']],),
[[1, 'Eli', '10.30'],
[2, 'Fay', '10.32'],
[3, 'Ade', '10.34'],
[3, 'Cy', '10.34'],
[5, 'Dee', '10.35']]),
('variant scenario 1',
([['Eli', 'DNF'], ['Fay', '11.371'], ['Cy', '11.370'], ['Dee', '11.385'], ['Bo', '11.384']],),
[[1, 'Cy', '11.37'],
[2, 'Fay', '11.38'],
[3, 'Bo', '11.39'],
[3, 'Dee', '11.39'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '11.191'], ['Eli', '11.212'], ['Dee', '11.20'], ['Cy', '11.192']],),
[[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '9.89'], ['Cy', '9.899'], ['Dee', 'DQ'], ['Fay', '9.918']],),
[[1, 'Ade', '9.89'], [2, 'Cy', '9.90'], [3, 'Fay', '9.92']]),
('variant scenario 1',
([['Ade', '10.372'], ['Dee', '10.400'], ['Fay', '10.370'], ['Bo', '10.39']],),
[[1, 'Fay', '10.37'], [2, 'Ade', '10.38'], [3, 'Bo', '10.39'], [4, 'Dee', '10.40']]),
('variant scenario 2',
([['Dee', '11.459'], ['Ade', '11.47'], ['Bo', '11.476']],),
[[1, 'Dee', '11.46'], [2, 'Ade', '11.47'], [3, 'Bo', '11.48']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', 'DQ'], ['Bo', 'DQ'], ['Fay', '10.410'], ['Ade', '10.393'], ['Dee', '10.413']],),
[[1, 'Ade', '10.40'], [2, 'Fay', '10.41'], [3, 'Dee', '10.42']]),
('variant scenario 1',
([['Fay', '10.316'], ['Cy', '10.319'], ['Dee', '10.288']],),
[[1, 'Dee', '10.29'], [2, 'Cy', '10.32'], [2, 'Fay', '10.32']]),
('variant scenario 2',
([['Eli', '10.480'],
['Fay', '10.471'],
['Cy', '10.464'],
['Dee', '10.489'],
['Bo', '10.461'],
['Ade', '10.464']],),
[[1, 'Ade', '10.47'],
[1, 'Bo', '10.47'],
[1, 'Cy', '10.47'],
[4, 'Eli', '10.48'],
[4, 'Fay', '10.48'],
[6, 'Dee', '10.49']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', '11.288'], ['Eli', 'DQ'], ['Dee', '11.295'], ['Fay', 'DQ'], ['Ade', '11.275']],),
[[1, 'Ade', '11.28'], [2, 'Cy', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Bo', '11.010'],
['Ade', '10.979'],
['Fay', '11.00'],
['Eli', '11.005'],
['Dee', '10.985'],
['Cy', '10.98']],),
[[1, 'Ade', '10.98'],
[1, 'Cy', '10.98'],
[3, 'Dee', '10.99'],
[4, 'Fay', '11.00'],
[5, 'Bo', '11.01'],
[5, 'Eli', '11.01']]),
('variant scenario 2',
([['Eli', '11.514'], ['Bo', '11.50'], ['Fay', '11.506'], ['Dee', '11.52']],),
[[1, 'Bo', '11.50'], [2, 'Fay', '11.51'], [3, 'Dee', '11.52'], [3, 'Eli', '11.52']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '11.2'], ['Fay', '11.28'], ['Bo', 'DQ']],),
[[1, 'Ade', '11.20'], [2, 'Fay', '11.28']]),
('variant scenario 1',
([['Dee', '11.400'], ['Bo', '11.37'], ['Cy', 'DNF'], ['Ade', '11.391']],),
[[1, 'Bo', '11.37'], [2, 'Ade', '11.40'], [2, 'Dee', '11.40'], [None, 'Cy', 'DNF']]),
('variant scenario 2',
([['Fay', '11.318'], ['Cy', '11.334'], ['Eli', '11.314'], ['Dee', 'DNF']],),
[[1, 'Eli', '11.32'], [1, 'Fay', '11.32'], [3, 'Cy', '11.34'], [None, 'Dee', 'DNF']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control distinct times | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | Passed |
| boundary thousandth rounds up | [[1, 'Cy', '10.00']] | [[1, 'Cy', '10.00']] | Passed |
| boundary shared place skips next | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | Passed |
| control dnf and dq | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF'], [None, 'Fay', 'DNF']] | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | Failed |
| regression: disqualification | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35'], [None, 'Bo', 'DNF']] | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35']] | Failed |
| variant scenario 1 | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | Passed |
SHA-256 / 9ff88914b9d53a62b426461e33b14a099354827d243ba3548adb548c9d908032
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(results):
fin = []
dnf = []
for name, t in results:
if t == 'DQ':
fin.append((10 ** 9, name))
continue
if t == 'DNF':
dnf.append(name)
continue
whole, _, frac = t.partition('.')
thous = int(whole) * 1000 + int((frac + '000')[:3])
hund = -(-thous // 10)
fin.append((hund, name))
fin.sort()
out = []
for i, (h, name) in enumerate(fin):
place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]
out.append([place, name, '%d.%02d' % (h // 100, h % 100)])
for name in sorted(dnf):
out.append([None, name, 'DNF'])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Eli', '10.3'],
['Ade', '10.334'],
['Dee', '10.350'],
['Cy', '10.334'],
['Bo', 'DQ'],
['Fay', '10.319']],),
[[1, 'Eli', '10.30'],
[2, 'Fay', '10.32'],
[3, 'Ade', '10.34'],
[3, 'Cy', '10.34'],
[5, 'Dee', '10.35']]),
('variant scenario 1',
([['Eli', 'DNF'], ['Fay', '11.371'], ['Cy', '11.370'], ['Dee', '11.385'], ['Bo', '11.384']],),
[[1, 'Cy', '11.37'],
[2, 'Fay', '11.38'],
[3, 'Bo', '11.39'],
[3, 'Dee', '11.39'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '11.191'], ['Eli', '11.212'], ['Dee', '11.20'], ['Cy', '11.192']],),
[[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '9.89'], ['Cy', '9.899'], ['Dee', 'DQ'], ['Fay', '9.918']],),
[[1, 'Ade', '9.89'], [2, 'Cy', '9.90'], [3, 'Fay', '9.92']]),
('variant scenario 1',
([['Ade', '10.372'], ['Dee', '10.400'], ['Fay', '10.370'], ['Bo', '10.39']],),
[[1, 'Fay', '10.37'], [2, 'Ade', '10.38'], [3, 'Bo', '10.39'], [4, 'Dee', '10.40']]),
('variant scenario 2',
([['Dee', '11.459'], ['Ade', '11.47'], ['Bo', '11.476']],),
[[1, 'Dee', '11.46'], [2, 'Ade', '11.47'], [3, 'Bo', '11.48']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', 'DQ'], ['Bo', 'DQ'], ['Fay', '10.410'], ['Ade', '10.393'], ['Dee', '10.413']],),
[[1, 'Ade', '10.40'], [2, 'Fay', '10.41'], [3, 'Dee', '10.42']]),
('variant scenario 1',
([['Fay', '10.316'], ['Cy', '10.319'], ['Dee', '10.288']],),
[[1, 'Dee', '10.29'], [2, 'Cy', '10.32'], [2, 'Fay', '10.32']]),
('variant scenario 2',
([['Eli', '10.480'],
['Fay', '10.471'],
['Cy', '10.464'],
['Dee', '10.489'],
['Bo', '10.461'],
['Ade', '10.464']],),
[[1, 'Ade', '10.47'],
[1, 'Bo', '10.47'],
[1, 'Cy', '10.47'],
[4, 'Eli', '10.48'],
[4, 'Fay', '10.48'],
[6, 'Dee', '10.49']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', '11.288'], ['Eli', 'DQ'], ['Dee', '11.295'], ['Fay', 'DQ'], ['Ade', '11.275']],),
[[1, 'Ade', '11.28'], [2, 'Cy', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Bo', '11.010'],
['Ade', '10.979'],
['Fay', '11.00'],
['Eli', '11.005'],
['Dee', '10.985'],
['Cy', '10.98']],),
[[1, 'Ade', '10.98'],
[1, 'Cy', '10.98'],
[3, 'Dee', '10.99'],
[4, 'Fay', '11.00'],
[5, 'Bo', '11.01'],
[5, 'Eli', '11.01']]),
('variant scenario 2',
([['Eli', '11.514'], ['Bo', '11.50'], ['Fay', '11.506'], ['Dee', '11.52']],),
[[1, 'Bo', '11.50'], [2, 'Fay', '11.51'], [3, 'Dee', '11.52'], [3, 'Eli', '11.52']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '11.2'], ['Fay', '11.28'], ['Bo', 'DQ']],),
[[1, 'Ade', '11.20'], [2, 'Fay', '11.28']]),
('variant scenario 1',
([['Dee', '11.400'], ['Bo', '11.37'], ['Cy', 'DNF'], ['Ade', '11.391']],),
[[1, 'Bo', '11.37'], [2, 'Ade', '11.40'], [2, 'Dee', '11.40'], [None, 'Cy', 'DNF']]),
('variant scenario 2',
([['Fay', '11.318'], ['Cy', '11.334'], ['Eli', '11.314'], ['Dee', 'DNF']],),
[[1, 'Eli', '11.32'], [1, 'Fay', '11.32'], [3, 'Cy', '11.34'], [None, 'Dee', 'DNF']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control distinct times | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | Passed |
| boundary thousandth rounds up | [[1, 'Cy', '10.00']] | [[1, 'Cy', '10.00']] | Passed |
| boundary shared place skips next | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | Passed |
| control dnf and dq | [[1, 'Dee', '11.00'], [2, 'Fay', '10000000.00'], [None, 'Eli', 'DNF']] | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | Failed |
| regression: disqualification | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35'], [6, 'Bo', '10000000.00']] | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35']] | Failed |
| variant scenario 1 | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | Passed |
SHA-256 / 78730dbbf37d8ea1cae675ed8d7580d826907ccfcfdf9117b189c2589e3a9227
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(results):
fin = []
dnf = []
for name, t in results:
if t == 'DQ':
continue
if t == 'DNF':
dnf.append(name)
continue
whole, _, frac = t.partition('.')
thous = int(whole) * 1000 + int((frac + '000')[:3])
hund = -(-thous // 10)
fin.append((hund, name))
fin.sort()
out = []
for i, (h, name) in enumerate(fin):
place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]
out.append([place, name, '%d.%02d' % (h // 100, h % 100)])
for name in sorted(dnf):
out.append([None, name, 'DNF'])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Eli', '10.3'],
['Ade', '10.334'],
['Dee', '10.350'],
['Cy', '10.334'],
['Bo', 'DQ'],
['Fay', '10.319']],),
[[1, 'Eli', '10.30'],
[2, 'Fay', '10.32'],
[3, 'Ade', '10.34'],
[3, 'Cy', '10.34'],
[5, 'Dee', '10.35']]),
('variant scenario 1',
([['Eli', 'DNF'], ['Fay', '11.371'], ['Cy', '11.370'], ['Dee', '11.385'], ['Bo', '11.384']],),
[[1, 'Cy', '11.37'],
[2, 'Fay', '11.38'],
[3, 'Bo', '11.39'],
[3, 'Dee', '11.39'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '11.191'], ['Eli', '11.212'], ['Dee', '11.20'], ['Cy', '11.192']],),
[[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '9.89'], ['Cy', '9.899'], ['Dee', 'DQ'], ['Fay', '9.918']],),
[[1, 'Ade', '9.89'], [2, 'Cy', '9.90'], [3, 'Fay', '9.92']]),
('variant scenario 1',
([['Ade', '10.372'], ['Dee', '10.400'], ['Fay', '10.370'], ['Bo', '10.39']],),
[[1, 'Fay', '10.37'], [2, 'Ade', '10.38'], [3, 'Bo', '10.39'], [4, 'Dee', '10.40']]),
('variant scenario 2',
([['Dee', '11.459'], ['Ade', '11.47'], ['Bo', '11.476']],),
[[1, 'Dee', '11.46'], [2, 'Ade', '11.47'], [3, 'Bo', '11.48']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', 'DQ'], ['Bo', 'DQ'], ['Fay', '10.410'], ['Ade', '10.393'], ['Dee', '10.413']],),
[[1, 'Ade', '10.40'], [2, 'Fay', '10.41'], [3, 'Dee', '10.42']]),
('variant scenario 1',
([['Fay', '10.316'], ['Cy', '10.319'], ['Dee', '10.288']],),
[[1, 'Dee', '10.29'], [2, 'Cy', '10.32'], [2, 'Fay', '10.32']]),
('variant scenario 2',
([['Eli', '10.480'],
['Fay', '10.471'],
['Cy', '10.464'],
['Dee', '10.489'],
['Bo', '10.461'],
['Ade', '10.464']],),
[[1, 'Ade', '10.47'],
[1, 'Bo', '10.47'],
[1, 'Cy', '10.47'],
[4, 'Eli', '10.48'],
[4, 'Fay', '10.48'],
[6, 'Dee', '10.49']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Cy', '11.288'], ['Eli', 'DQ'], ['Dee', '11.295'], ['Fay', 'DQ'], ['Ade', '11.275']],),
[[1, 'Ade', '11.28'], [2, 'Cy', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Bo', '11.010'],
['Ade', '10.979'],
['Fay', '11.00'],
['Eli', '11.005'],
['Dee', '10.985'],
['Cy', '10.98']],),
[[1, 'Ade', '10.98'],
[1, 'Cy', '10.98'],
[3, 'Dee', '10.99'],
[4, 'Fay', '11.00'],
[5, 'Bo', '11.01'],
[5, 'Eli', '11.01']]),
('variant scenario 2',
([['Eli', '11.514'], ['Bo', '11.50'], ['Fay', '11.506'], ['Dee', '11.52']],),
[[1, 'Bo', '11.50'], [2, 'Fay', '11.51'], [3, 'Dee', '11.52'], [3, 'Eli', '11.52']])],
[('control distinct times',
([['Bo', '10.12'], ['Ade', '10.15']],),
[[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),
('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),
('boundary shared place skips next',
([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),
[[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),
('control dnf and dq',
([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),
[[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),
('regression: disqualification',
([['Ade', '11.2'], ['Fay', '11.28'], ['Bo', 'DQ']],),
[[1, 'Ade', '11.20'], [2, 'Fay', '11.28']]),
('variant scenario 1',
([['Dee', '11.400'], ['Bo', '11.37'], ['Cy', 'DNF'], ['Ade', '11.391']],),
[[1, 'Bo', '11.37'], [2, 'Ade', '11.40'], [2, 'Dee', '11.40'], [None, 'Cy', 'DNF']]),
('variant scenario 2',
([['Fay', '11.318'], ['Cy', '11.334'], ['Eli', '11.314'], ['Dee', 'DNF']],),
[[1, 'Eli', '11.32'], [1, 'Fay', '11.32'], [3, 'Cy', '11.34'], [None, 'Dee', 'DNF']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control distinct times | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | Passed |
| boundary thousandth rounds up | [[1, 'Cy', '10.00']] | [[1, 'Cy', '10.00']] | Passed |
| boundary shared place skips next | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | Passed |
| control dnf and dq | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | Passed |
| regression: disqualification | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35']] | [[1, 'Eli', '10.30'], [2, 'Fay', '10.32'], [3, 'Ade', '10.34'], [3, 'Cy', '10.34'], [5, 'Dee', '10.35']] | Passed |
| variant scenario 1 | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | [[1, 'Cy', '11.37'], [2, 'Fay', '11.38'], [3, 'Bo', '11.39'], [3, 'Dee', '11.39'], [None, 'Eli', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | [[1, 'Bo', '11.20'], [1, 'Cy', '11.20'], [1, 'Dee', '11.20'], [4, 'Eli', '11.22']] | Passed |
SHA-256 / ae1a26a9920a1b93286ebde3b1ca2b86f4b9f04d3017e3f832669e46775b9bba
Verification & scope
Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any governing body rulebook or operator house rules. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:29.306657+00:00.
Case digest / 00635e1c2d7111e12ed4a45774244edf60fd43c55e284c11c9964ea327d216f3