FA-84276 / Sports scoring and tiebreakers / Open access
Tied athletes given consecutive places or dense ranks · case 01
Two athletes on the same hundredth are given places 1 and 2, or the next athlete is placed 2nd.
ROOT CAUSE
Every row is given its index + 1 as place.
VERIFIED REPAIR
Share the place for equal rounded times and skip the following places.
Unsuccessful approach: Dense ranking shares the place but does not skip the next one.
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 == '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
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: shared place',
([['Cy', 'DNF'],
['Eli', '9.972'],
['Bo', '9.974'],
['Dee', '9.971'],
['Fay', '9.958'],
['Ade', '9.961']],),
[[1, 'Fay', '9.96'],
[2, 'Ade', '9.97'],
[3, 'Bo', '9.98'],
[3, 'Dee', '9.98'],
[3, 'Eli', '9.98'],
[None, 'Cy', 'DNF']]),
('regression: shared place',
([['Cy', '10.043'],
['Eli', '10.018'],
['Ade', '10.04'],
['Dee', '10.041'],
['Fay', '10.024'],
['Bo', '10.026']],),
[[1, 'Eli', '10.02'],
[2, 'Bo', '10.03'],
[2, 'Fay', '10.03'],
[4, 'Ade', '10.04'],
[5, 'Cy', '10.05'],
[5, 'Dee', '10.05']]),
('variant scenario 1',
([['Dee', '10.050'], ['Cy', '10.075'], ['Bo', 'DNF'], ['Fay', 'DNF']],),
[[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']]),
('variant scenario 2',
([['Fay', 'DNF'], ['Bo', 'DQ'], ['Eli', '10.893']],),
[[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']])],
[('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: shared place',
([['Cy', '9.860'],
['Fay', '9.822'],
['Dee', '9.822'],
['Eli', 'DNF'],
['Ade', '9.838'],
['Bo', '9.83']],),
[[1, 'Bo', '9.83'],
[1, 'Dee', '9.83'],
[1, 'Fay', '9.83'],
[4, 'Ade', '9.84'],
[5, 'Cy', '9.86'],
[None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Ade', '10.62'], ['Cy', '10.621'], ['Fay', '10.592'], ['Dee', '10.626']],),
[[1, 'Fay', '10.60'], [2, 'Ade', '10.62'], [3, 'Cy', '10.63'], [3, 'Dee', '10.63']]),
('variant scenario 2',
([['Dee', 'DNF'], ['Ade', '9.8'], ['Eli', '9.849']],),
[[1, 'Ade', '9.80'], [2, 'Eli', '9.85'], [None, 'Dee', 'DNF']])],
[('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: shared place',
([['Dee', 'DQ'], ['Bo', '10.773'], ['Fay', '10.779']],),
[[1, 'Bo', '10.78'], [1, 'Fay', '10.78']]),
('regression: shared place',
([['Eli', '10.187'],
['Fay', '10.158'],
['Ade', '10.157'],
['Bo', '10.153'],
['Cy', '10.155'],
['Dee', '10.154']],),
[[1, 'Ade', '10.16'],
[1, 'Bo', '10.16'],
[1, 'Cy', '10.16'],
[1, 'Dee', '10.16'],
[1, 'Fay', '10.16'],
[6, 'Eli', '10.19']]),
('variant scenario 1',
([['Bo', '10.66'],
['Ade', 'DQ'],
['Cy', '10.679'],
['Fay', '10.6'],
['Eli', '10.65'],
['Dee', '10.672']],),
[[1, 'Fay', '10.60'],
[2, 'Eli', '10.65'],
[3, 'Bo', '10.66'],
[4, 'Cy', '10.68'],
[4, 'Dee', '10.68']]),
('variant scenario 2',
([['Ade', '10.895'], ['Eli', '10.87'], ['Bo', '10.'], ['Cy', '10.87'], ['Fay', '10.896']],),
[[1, 'Bo', '10.00'],
[2, 'Cy', '10.87'],
[2, 'Eli', '10.87'],
[4, 'Ade', '10.90'],
[4, 'Fay', '10.90']])],
[('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: shared place',
([['Cy', '10.313'], ['Fay', '10.309'], ['Ade', 'DQ'], ['Dee', '10.312']],),
[[1, 'Fay', '10.31'], [2, 'Cy', '10.32'], [2, 'Dee', '10.32']]),
('regression: shared place',
([['Bo', '10.673'], ['Cy', '10.700'], ['Dee', '10.678'], ['Eli', 'DNF']],),
[[1, 'Bo', '10.68'], [1, 'Dee', '10.68'], [3, 'Cy', '10.70'], [None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Fay', '10.'],
['Dee', 'DNF'],
['Eli', 'DNF'],
['Ade', '10.926'],
['Bo', '10.913'],
['Cy', 'DQ']],),
[[1, 'Fay', '10.00'],
[2, 'Bo', '10.92'],
[3, 'Ade', '10.93'],
[None, 'Dee', 'DNF'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Ade', '10.146'],
['Fay', '10.11'],
['Bo', '10.144'],
['Eli', '10.12'],
['Cy', 'DNF'],
['Dee', '10.144']],),
[[1, 'Fay', '10.11'],
[2, 'Eli', '10.12'],
[3, 'Ade', '10.15'],
[3, 'Bo', '10.15'],
[3, 'Dee', '10.15'],
[None, 'Cy', 'DNF']])],
[('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: shared place',
([['Bo', '10.001'],
['Ade', '10.033'],
['Eli', '10.002'],
['Fay', '10.018'],
['Cy', '10.0'],
['Dee', '10.04']],),
[[1, 'Cy', '10.00'],
[2, 'Bo', '10.01'],
[2, 'Eli', '10.01'],
[4, 'Fay', '10.02'],
[5, 'Ade', '10.04'],
[5, 'Dee', '10.04']]),
('variant scenario 1',
([['Cy', '11.31'], ['Fay', '11.302'], ['Eli', '11.3']],),
[[1, 'Eli', '11.30'], [2, 'Cy', '11.31'], [2, 'Fay', '11.31']]),
('variant scenario 2',
([['Cy', '10.9'], ['Ade', 'DNF'], ['Fay', '10.899'], ['Dee', '10.888']],),
[[1, 'Dee', '10.89'], [2, 'Cy', '10.90'], [2, 'Fay', '10.90'], [None, 'Ade', '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'], [2, 'Bo', '10.11'], [3, 'Cy', '10.20']] | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | Failed |
| control dnf and dq | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | Passed |
| regression: shared place | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [4, 'Dee', '9.98'], [5, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [3, 'Dee', '9.98'], [3, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | Failed |
| regression: shared place | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [3, 'Fay', '10.03'], [4, 'Ade', '10.04'], [5, 'Cy', '10.05'], [6, 'Dee', '10.05']] | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [2, 'Fay', '10.03'], [4, 'Ade', '10.04'], [5, 'Cy', '10.05'], [5, 'Dee', '10.05']] | Failed |
| variant scenario 1 | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | Passed |
SHA-256 / fb937ff09c958836483cb019fad735b309010d3b05728b17a2fc3740b5816775
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':
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 = (out[-1][0] + 1 if out else 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: shared place',
([['Cy', 'DNF'],
['Eli', '9.972'],
['Bo', '9.974'],
['Dee', '9.971'],
['Fay', '9.958'],
['Ade', '9.961']],),
[[1, 'Fay', '9.96'],
[2, 'Ade', '9.97'],
[3, 'Bo', '9.98'],
[3, 'Dee', '9.98'],
[3, 'Eli', '9.98'],
[None, 'Cy', 'DNF']]),
('regression: shared place',
([['Cy', '10.043'],
['Eli', '10.018'],
['Ade', '10.04'],
['Dee', '10.041'],
['Fay', '10.024'],
['Bo', '10.026']],),
[[1, 'Eli', '10.02'],
[2, 'Bo', '10.03'],
[2, 'Fay', '10.03'],
[4, 'Ade', '10.04'],
[5, 'Cy', '10.05'],
[5, 'Dee', '10.05']]),
('variant scenario 1',
([['Dee', '10.050'], ['Cy', '10.075'], ['Bo', 'DNF'], ['Fay', 'DNF']],),
[[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']]),
('variant scenario 2',
([['Fay', 'DNF'], ['Bo', 'DQ'], ['Eli', '10.893']],),
[[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']])],
[('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: shared place',
([['Cy', '9.860'],
['Fay', '9.822'],
['Dee', '9.822'],
['Eli', 'DNF'],
['Ade', '9.838'],
['Bo', '9.83']],),
[[1, 'Bo', '9.83'],
[1, 'Dee', '9.83'],
[1, 'Fay', '9.83'],
[4, 'Ade', '9.84'],
[5, 'Cy', '9.86'],
[None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Ade', '10.62'], ['Cy', '10.621'], ['Fay', '10.592'], ['Dee', '10.626']],),
[[1, 'Fay', '10.60'], [2, 'Ade', '10.62'], [3, 'Cy', '10.63'], [3, 'Dee', '10.63']]),
('variant scenario 2',
([['Dee', 'DNF'], ['Ade', '9.8'], ['Eli', '9.849']],),
[[1, 'Ade', '9.80'], [2, 'Eli', '9.85'], [None, 'Dee', 'DNF']])],
[('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: shared place',
([['Dee', 'DQ'], ['Bo', '10.773'], ['Fay', '10.779']],),
[[1, 'Bo', '10.78'], [1, 'Fay', '10.78']]),
('regression: shared place',
([['Eli', '10.187'],
['Fay', '10.158'],
['Ade', '10.157'],
['Bo', '10.153'],
['Cy', '10.155'],
['Dee', '10.154']],),
[[1, 'Ade', '10.16'],
[1, 'Bo', '10.16'],
[1, 'Cy', '10.16'],
[1, 'Dee', '10.16'],
[1, 'Fay', '10.16'],
[6, 'Eli', '10.19']]),
('variant scenario 1',
([['Bo', '10.66'],
['Ade', 'DQ'],
['Cy', '10.679'],
['Fay', '10.6'],
['Eli', '10.65'],
['Dee', '10.672']],),
[[1, 'Fay', '10.60'],
[2, 'Eli', '10.65'],
[3, 'Bo', '10.66'],
[4, 'Cy', '10.68'],
[4, 'Dee', '10.68']]),
('variant scenario 2',
([['Ade', '10.895'], ['Eli', '10.87'], ['Bo', '10.'], ['Cy', '10.87'], ['Fay', '10.896']],),
[[1, 'Bo', '10.00'],
[2, 'Cy', '10.87'],
[2, 'Eli', '10.87'],
[4, 'Ade', '10.90'],
[4, 'Fay', '10.90']])],
[('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: shared place',
([['Cy', '10.313'], ['Fay', '10.309'], ['Ade', 'DQ'], ['Dee', '10.312']],),
[[1, 'Fay', '10.31'], [2, 'Cy', '10.32'], [2, 'Dee', '10.32']]),
('regression: shared place',
([['Bo', '10.673'], ['Cy', '10.700'], ['Dee', '10.678'], ['Eli', 'DNF']],),
[[1, 'Bo', '10.68'], [1, 'Dee', '10.68'], [3, 'Cy', '10.70'], [None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Fay', '10.'],
['Dee', 'DNF'],
['Eli', 'DNF'],
['Ade', '10.926'],
['Bo', '10.913'],
['Cy', 'DQ']],),
[[1, 'Fay', '10.00'],
[2, 'Bo', '10.92'],
[3, 'Ade', '10.93'],
[None, 'Dee', 'DNF'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Ade', '10.146'],
['Fay', '10.11'],
['Bo', '10.144'],
['Eli', '10.12'],
['Cy', 'DNF'],
['Dee', '10.144']],),
[[1, 'Fay', '10.11'],
[2, 'Eli', '10.12'],
[3, 'Ade', '10.15'],
[3, 'Bo', '10.15'],
[3, 'Dee', '10.15'],
[None, 'Cy', 'DNF']])],
[('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: shared place',
([['Bo', '10.001'],
['Ade', '10.033'],
['Eli', '10.002'],
['Fay', '10.018'],
['Cy', '10.0'],
['Dee', '10.04']],),
[[1, 'Cy', '10.00'],
[2, 'Bo', '10.01'],
[2, 'Eli', '10.01'],
[4, 'Fay', '10.02'],
[5, 'Ade', '10.04'],
[5, 'Dee', '10.04']]),
('variant scenario 1',
([['Cy', '11.31'], ['Fay', '11.302'], ['Eli', '11.3']],),
[[1, 'Eli', '11.30'], [2, 'Cy', '11.31'], [2, 'Fay', '11.31']]),
('variant scenario 2',
([['Cy', '10.9'], ['Ade', 'DNF'], ['Fay', '10.899'], ['Dee', '10.888']],),
[[1, 'Dee', '10.89'], [2, 'Cy', '10.90'], [2, 'Fay', '10.90'], [None, 'Ade', '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'], [2, 'Cy', '10.20']] | [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']] | Failed |
| control dnf and dq | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']] | Passed |
| regression: shared place | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [3, 'Dee', '9.98'], [3, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [3, 'Dee', '9.98'], [3, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | Passed |
| regression: shared place | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [2, 'Fay', '10.03'], [3, 'Ade', '10.04'], [4, 'Cy', '10.05'], [4, 'Dee', '10.05']] | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [2, 'Fay', '10.03'], [4, 'Ade', '10.04'], [5, 'Cy', '10.05'], [5, 'Dee', '10.05']] | Failed |
| variant scenario 1 | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | Passed |
SHA-256 / 99a97fd3ec54f0e12bc578694528292f49e49028824c7e0168576a8915046fcf
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: shared place',
([['Cy', 'DNF'],
['Eli', '9.972'],
['Bo', '9.974'],
['Dee', '9.971'],
['Fay', '9.958'],
['Ade', '9.961']],),
[[1, 'Fay', '9.96'],
[2, 'Ade', '9.97'],
[3, 'Bo', '9.98'],
[3, 'Dee', '9.98'],
[3, 'Eli', '9.98'],
[None, 'Cy', 'DNF']]),
('regression: shared place',
([['Cy', '10.043'],
['Eli', '10.018'],
['Ade', '10.04'],
['Dee', '10.041'],
['Fay', '10.024'],
['Bo', '10.026']],),
[[1, 'Eli', '10.02'],
[2, 'Bo', '10.03'],
[2, 'Fay', '10.03'],
[4, 'Ade', '10.04'],
[5, 'Cy', '10.05'],
[5, 'Dee', '10.05']]),
('variant scenario 1',
([['Dee', '10.050'], ['Cy', '10.075'], ['Bo', 'DNF'], ['Fay', 'DNF']],),
[[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']]),
('variant scenario 2',
([['Fay', 'DNF'], ['Bo', 'DQ'], ['Eli', '10.893']],),
[[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']])],
[('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: shared place',
([['Cy', '9.860'],
['Fay', '9.822'],
['Dee', '9.822'],
['Eli', 'DNF'],
['Ade', '9.838'],
['Bo', '9.83']],),
[[1, 'Bo', '9.83'],
[1, 'Dee', '9.83'],
[1, 'Fay', '9.83'],
[4, 'Ade', '9.84'],
[5, 'Cy', '9.86'],
[None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Ade', '10.62'], ['Cy', '10.621'], ['Fay', '10.592'], ['Dee', '10.626']],),
[[1, 'Fay', '10.60'], [2, 'Ade', '10.62'], [3, 'Cy', '10.63'], [3, 'Dee', '10.63']]),
('variant scenario 2',
([['Dee', 'DNF'], ['Ade', '9.8'], ['Eli', '9.849']],),
[[1, 'Ade', '9.80'], [2, 'Eli', '9.85'], [None, 'Dee', 'DNF']])],
[('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: shared place',
([['Dee', 'DQ'], ['Bo', '10.773'], ['Fay', '10.779']],),
[[1, 'Bo', '10.78'], [1, 'Fay', '10.78']]),
('regression: shared place',
([['Eli', '10.187'],
['Fay', '10.158'],
['Ade', '10.157'],
['Bo', '10.153'],
['Cy', '10.155'],
['Dee', '10.154']],),
[[1, 'Ade', '10.16'],
[1, 'Bo', '10.16'],
[1, 'Cy', '10.16'],
[1, 'Dee', '10.16'],
[1, 'Fay', '10.16'],
[6, 'Eli', '10.19']]),
('variant scenario 1',
([['Bo', '10.66'],
['Ade', 'DQ'],
['Cy', '10.679'],
['Fay', '10.6'],
['Eli', '10.65'],
['Dee', '10.672']],),
[[1, 'Fay', '10.60'],
[2, 'Eli', '10.65'],
[3, 'Bo', '10.66'],
[4, 'Cy', '10.68'],
[4, 'Dee', '10.68']]),
('variant scenario 2',
([['Ade', '10.895'], ['Eli', '10.87'], ['Bo', '10.'], ['Cy', '10.87'], ['Fay', '10.896']],),
[[1, 'Bo', '10.00'],
[2, 'Cy', '10.87'],
[2, 'Eli', '10.87'],
[4, 'Ade', '10.90'],
[4, 'Fay', '10.90']])],
[('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: shared place',
([['Cy', '10.313'], ['Fay', '10.309'], ['Ade', 'DQ'], ['Dee', '10.312']],),
[[1, 'Fay', '10.31'], [2, 'Cy', '10.32'], [2, 'Dee', '10.32']]),
('regression: shared place',
([['Bo', '10.673'], ['Cy', '10.700'], ['Dee', '10.678'], ['Eli', 'DNF']],),
[[1, 'Bo', '10.68'], [1, 'Dee', '10.68'], [3, 'Cy', '10.70'], [None, 'Eli', 'DNF']]),
('variant scenario 1',
([['Fay', '10.'],
['Dee', 'DNF'],
['Eli', 'DNF'],
['Ade', '10.926'],
['Bo', '10.913'],
['Cy', 'DQ']],),
[[1, 'Fay', '10.00'],
[2, 'Bo', '10.92'],
[3, 'Ade', '10.93'],
[None, 'Dee', 'DNF'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Ade', '10.146'],
['Fay', '10.11'],
['Bo', '10.144'],
['Eli', '10.12'],
['Cy', 'DNF'],
['Dee', '10.144']],),
[[1, 'Fay', '10.11'],
[2, 'Eli', '10.12'],
[3, 'Ade', '10.15'],
[3, 'Bo', '10.15'],
[3, 'Dee', '10.15'],
[None, 'Cy', 'DNF']])],
[('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: shared place',
([['Bo', '10.001'],
['Ade', '10.033'],
['Eli', '10.002'],
['Fay', '10.018'],
['Cy', '10.0'],
['Dee', '10.04']],),
[[1, 'Cy', '10.00'],
[2, 'Bo', '10.01'],
[2, 'Eli', '10.01'],
[4, 'Fay', '10.02'],
[5, 'Ade', '10.04'],
[5, 'Dee', '10.04']]),
('variant scenario 1',
([['Cy', '11.31'], ['Fay', '11.302'], ['Eli', '11.3']],),
[[1, 'Eli', '11.30'], [2, 'Cy', '11.31'], [2, 'Fay', '11.31']]),
('variant scenario 2',
([['Cy', '10.9'], ['Ade', 'DNF'], ['Fay', '10.899'], ['Dee', '10.888']],),
[[1, 'Dee', '10.89'], [2, 'Cy', '10.90'], [2, 'Fay', '10.90'], [None, 'Ade', '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: shared place | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [3, 'Dee', '9.98'], [3, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | [[1, 'Fay', '9.96'], [2, 'Ade', '9.97'], [3, 'Bo', '9.98'], [3, 'Dee', '9.98'], [3, 'Eli', '9.98'], [None, 'Cy', 'DNF']] | Passed |
| regression: shared place | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [2, 'Fay', '10.03'], [4, 'Ade', '10.04'], [5, 'Cy', '10.05'], [5, 'Dee', '10.05']] | [[1, 'Eli', '10.02'], [2, 'Bo', '10.03'], [2, 'Fay', '10.03'], [4, 'Ade', '10.04'], [5, 'Cy', '10.05'], [5, 'Dee', '10.05']] | Passed |
| variant scenario 1 | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | [[1, 'Dee', '10.05'], [2, 'Cy', '10.08'], [None, 'Bo', 'DNF'], [None, 'Fay', 'DNF']] | Passed |
| variant scenario 2 | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | [[1, 'Eli', '10.90'], [None, 'Fay', 'DNF']] | Passed |
SHA-256 / 00af61d60b6de363dc5ab7a88b2f5d3f846a6005b67cfde9ba4304a38f4597a4
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.218183+00:00.
Case digest / b8930c02720a72b3fec2a1675b630667c6f4dfec63bf41004b9256f33f7354df