FA-84271 / Sports scoring and tiebreakers / Open access
Short fractional parts read as thousandths · case 01
A time of "10.2" is treated as 10.002 seconds.
ROOT CAUSE
The fractional digits are parsed as an integer without right-padding.
VERIFIED REPAIR
Right-pad the fractional part to three digits.
Unsuccessful approach: Keeping only two digits discards the thousandths before rounding up.
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 or 0)
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: fraction padding',
([['Cy', '11.170'], ['Bo', 'DNF'], ['Ade', '11.17'], ['Eli', 'DNF']],),
[[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Bo', '9.983'], ['Cy', '9.998'], ['Eli', '9.993'], ['Dee', '9.960'], ['Fay', 'DQ']],),
[[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']]),
('variant scenario 1',
([['Cy', 'DQ'],
['Fay', '10.082'],
['Dee', '10.09'],
['Bo', '10.085'],
['Ade', '10.072'],
['Eli', '10.086']],),
[[1, 'Ade', '10.08'],
[2, 'Bo', '10.09'],
[2, 'Dee', '10.09'],
[2, 'Eli', '10.09'],
[2, 'Fay', '10.09']]),
('variant scenario 2',
([['Ade', '11.474'], ['Dee', 'DQ'], ['Fay', '11.482'], ['Cy', '11.501']],),
[[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']])],
[('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: fraction padding',
([['Fay', '10.250'], ['Eli', 'DNF'], ['Cy', '10.26']],),
[[1, 'Fay', '10.25'], [2, 'Cy', '10.26'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Eli', '11.286'], ['Fay', '11.28'], ['Dee', '11.292']],),
[[1, 'Fay', '11.28'], [2, 'Eli', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Dee', 'DQ'], ['Ade', 'DQ'], ['Eli', '11.0'], ['Bo', '11.01']],),
[[1, 'Eli', '11.00'], [2, 'Bo', '11.01']]),
('variant scenario 2',
([['Bo', '10.874'], ['Ade', '10.884'], ['Fay', 'DQ']],),
[[1, 'Bo', '10.88'], [2, 'Ade', '10.89']])],
[('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: fraction padding',
([['Eli', '10.636'], ['Dee', '10.62'], ['Ade', '10.644']],),
[[1, 'Dee', '10.62'], [2, 'Eli', '10.64'], [3, 'Ade', '10.65']]),
('variant scenario 1',
([['Fay', '10.081'], ['Dee', '10.118'], ['Bo', '10.'], ['Eli', 'DNF'], ['Ade', '10.088']],),
[[1, 'Bo', '10.00'],
[2, 'Ade', '10.09'],
[2, 'Fay', '10.09'],
[4, 'Dee', '10.12'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '9.964'],
['Eli', 'DQ'],
['Dee', '9.'],
['Cy', '9.940'],
['Fay', 'DQ'],
['Ade', '9.953']],),
[[1, 'Dee', '9.00'], [2, 'Cy', '9.94'], [3, 'Ade', '9.96'], [4, 'Bo', '9.97']])],
[('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: fraction padding',
([['Dee', '11.248'],
['Ade', '11.232'],
['Eli', '11.250'],
['Bo', '11.250'],
['Cy', '11.264'],
['Fay', '11.229']],),
[[1, 'Fay', '11.23'],
[2, 'Ade', '11.24'],
[3, 'Bo', '11.25'],
[3, 'Dee', '11.25'],
[3, 'Eli', '11.25'],
[6, 'Cy', '11.27']]),
('regression: fraction padding',
([['Fay', '10.641'], ['Bo', '10.622'], ['Cy', '10.60'], ['Ade', '10.6']],),
[[1, 'Ade', '10.60'], [1, 'Cy', '10.60'], [3, 'Bo', '10.63'], [4, 'Fay', '10.65']]),
('variant scenario 1',
([['Bo', '10.298'], ['Cy', 'DQ'], ['Fay', '10.277']],),
[[1, 'Fay', '10.28'], [2, 'Bo', '10.30']]),
('variant scenario 2',
([['Eli', '10.166'], ['Fay', '10.156'], ['Cy', '10.188']],),
[[1, 'Fay', '10.16'], [2, 'Eli', '10.17'], [3, 'Cy', '10.19']])],
[('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: fraction padding',
([['Ade', '10.599'], ['Fay', '10.590'], ['Dee', '10.593'], ['Cy', '10.588'], ['Bo', 'DQ']],),
[[1, 'Cy', '10.59'], [1, 'Fay', '10.59'], [3, 'Ade', '10.60'], [3, 'Dee', '10.60']]),
('regression: fraction padding',
([['Eli', '11.47'], ['Cy', '11.'], ['Bo', '11.471'], ['Fay', '11.46']],),
[[1, 'Cy', '11.00'], [2, 'Fay', '11.46'], [3, 'Eli', '11.47'], [4, 'Bo', '11.48']]),
('variant scenario 1',
([['Dee', '11.485'], ['Fay', '11.486'], ['Cy', '11.48'], ['Ade', '11.480']],),
[[1, 'Ade', '11.48'], [1, 'Cy', '11.48'], [3, 'Dee', '11.49'], [3, 'Fay', '11.49']]),
('variant scenario 2',
([['Bo', '11.012'], ['Fay', '11.013'], ['Dee', '10.999']],),
[[1, 'Dee', '11.00'], [2, 'Bo', '11.02'], [2, 'Fay', '11.02']])]]
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, 'Ade', '10.02'], [1, 'Bo', '10.02']] | [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']] | Failed |
| boundary thousandth rounds up | [[1, 'Cy', '10.00']] | [[1, 'Cy', '10.00']] | Passed |
| boundary shared place skips next | [[1, 'Cy', '10.01'], [2, 'Bo', '10.02'], [3, 'Ade', '10.11']] | [[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: fraction padding | [[1, 'Ade', '11.02'], [2, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | [[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | Failed |
| regression: fraction padding | [[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']] | [[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']] | Passed |
| variant scenario 1 | [[1, 'Dee', '10.01'], [2, 'Ade', '10.08'], [3, 'Bo', '10.09'], [3, 'Eli', '10.09'], [3, 'Fay', '10.09']] | [[1, 'Ade', '10.08'], [2, 'Bo', '10.09'], [2, 'Dee', '10.09'], [2, 'Eli', '10.09'], [2, 'Fay', '10.09']] | Failed |
| variant scenario 2 | [[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']] | [[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']] | Passed |
SHA-256 / 987132bad207c16dad8c35f33724bfcfa2f77659cfc281be7a39a06182d50a62
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 + '00')[:2]) * 10
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: fraction padding',
([['Cy', '11.170'], ['Bo', 'DNF'], ['Ade', '11.17'], ['Eli', 'DNF']],),
[[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Bo', '9.983'], ['Cy', '9.998'], ['Eli', '9.993'], ['Dee', '9.960'], ['Fay', 'DQ']],),
[[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']]),
('variant scenario 1',
([['Cy', 'DQ'],
['Fay', '10.082'],
['Dee', '10.09'],
['Bo', '10.085'],
['Ade', '10.072'],
['Eli', '10.086']],),
[[1, 'Ade', '10.08'],
[2, 'Bo', '10.09'],
[2, 'Dee', '10.09'],
[2, 'Eli', '10.09'],
[2, 'Fay', '10.09']]),
('variant scenario 2',
([['Ade', '11.474'], ['Dee', 'DQ'], ['Fay', '11.482'], ['Cy', '11.501']],),
[[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']])],
[('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: fraction padding',
([['Fay', '10.250'], ['Eli', 'DNF'], ['Cy', '10.26']],),
[[1, 'Fay', '10.25'], [2, 'Cy', '10.26'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Eli', '11.286'], ['Fay', '11.28'], ['Dee', '11.292']],),
[[1, 'Fay', '11.28'], [2, 'Eli', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Dee', 'DQ'], ['Ade', 'DQ'], ['Eli', '11.0'], ['Bo', '11.01']],),
[[1, 'Eli', '11.00'], [2, 'Bo', '11.01']]),
('variant scenario 2',
([['Bo', '10.874'], ['Ade', '10.884'], ['Fay', 'DQ']],),
[[1, 'Bo', '10.88'], [2, 'Ade', '10.89']])],
[('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: fraction padding',
([['Eli', '10.636'], ['Dee', '10.62'], ['Ade', '10.644']],),
[[1, 'Dee', '10.62'], [2, 'Eli', '10.64'], [3, 'Ade', '10.65']]),
('variant scenario 1',
([['Fay', '10.081'], ['Dee', '10.118'], ['Bo', '10.'], ['Eli', 'DNF'], ['Ade', '10.088']],),
[[1, 'Bo', '10.00'],
[2, 'Ade', '10.09'],
[2, 'Fay', '10.09'],
[4, 'Dee', '10.12'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '9.964'],
['Eli', 'DQ'],
['Dee', '9.'],
['Cy', '9.940'],
['Fay', 'DQ'],
['Ade', '9.953']],),
[[1, 'Dee', '9.00'], [2, 'Cy', '9.94'], [3, 'Ade', '9.96'], [4, 'Bo', '9.97']])],
[('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: fraction padding',
([['Dee', '11.248'],
['Ade', '11.232'],
['Eli', '11.250'],
['Bo', '11.250'],
['Cy', '11.264'],
['Fay', '11.229']],),
[[1, 'Fay', '11.23'],
[2, 'Ade', '11.24'],
[3, 'Bo', '11.25'],
[3, 'Dee', '11.25'],
[3, 'Eli', '11.25'],
[6, 'Cy', '11.27']]),
('regression: fraction padding',
([['Fay', '10.641'], ['Bo', '10.622'], ['Cy', '10.60'], ['Ade', '10.6']],),
[[1, 'Ade', '10.60'], [1, 'Cy', '10.60'], [3, 'Bo', '10.63'], [4, 'Fay', '10.65']]),
('variant scenario 1',
([['Bo', '10.298'], ['Cy', 'DQ'], ['Fay', '10.277']],),
[[1, 'Fay', '10.28'], [2, 'Bo', '10.30']]),
('variant scenario 2',
([['Eli', '10.166'], ['Fay', '10.156'], ['Cy', '10.188']],),
[[1, 'Fay', '10.16'], [2, 'Eli', '10.17'], [3, 'Cy', '10.19']])],
[('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: fraction padding',
([['Ade', '10.599'], ['Fay', '10.590'], ['Dee', '10.593'], ['Cy', '10.588'], ['Bo', 'DQ']],),
[[1, 'Cy', '10.59'], [1, 'Fay', '10.59'], [3, 'Ade', '10.60'], [3, 'Dee', '10.60']]),
('regression: fraction padding',
([['Eli', '11.47'], ['Cy', '11.'], ['Bo', '11.471'], ['Fay', '11.46']],),
[[1, 'Cy', '11.00'], [2, 'Fay', '11.46'], [3, 'Eli', '11.47'], [4, 'Bo', '11.48']]),
('variant scenario 1',
([['Dee', '11.485'], ['Fay', '11.486'], ['Cy', '11.48'], ['Ade', '11.480']],),
[[1, 'Ade', '11.48'], [1, 'Cy', '11.48'], [3, 'Dee', '11.49'], [3, 'Fay', '11.49']]),
('variant scenario 2',
([['Bo', '11.012'], ['Fay', '11.013'], ['Dee', '10.999']],),
[[1, 'Dee', '11.00'], [2, 'Bo', '11.02'], [2, 'Fay', '11.02']])]]
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', '9.99']] | [[1, 'Cy', '10.00']] | Failed |
| boundary shared place skips next | [[1, 'Ade', '10.10'], [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: fraction padding | [[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | [[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | Passed |
| regression: fraction padding | [[1, 'Dee', '9.96'], [2, 'Bo', '9.98'], [3, 'Cy', '9.99'], [3, 'Eli', '9.99']] | [[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']] | Failed |
| variant scenario 1 | [[1, 'Ade', '10.07'], [2, 'Bo', '10.08'], [2, 'Eli', '10.08'], [2, 'Fay', '10.08'], [5, 'Dee', '10.09']] | [[1, 'Ade', '10.08'], [2, 'Bo', '10.09'], [2, 'Dee', '10.09'], [2, 'Eli', '10.09'], [2, 'Fay', '10.09']] | Failed |
| variant scenario 2 | [[1, 'Ade', '11.47'], [2, 'Fay', '11.48'], [3, 'Cy', '11.50']] | [[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']] | Failed |
SHA-256 / a12fa555be7bf8c4af52ebccf81822aa9d08f78728a613d4c6f2288677c62de3
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: fraction padding',
([['Cy', '11.170'], ['Bo', 'DNF'], ['Ade', '11.17'], ['Eli', 'DNF']],),
[[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Bo', '9.983'], ['Cy', '9.998'], ['Eli', '9.993'], ['Dee', '9.960'], ['Fay', 'DQ']],),
[[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']]),
('variant scenario 1',
([['Cy', 'DQ'],
['Fay', '10.082'],
['Dee', '10.09'],
['Bo', '10.085'],
['Ade', '10.072'],
['Eli', '10.086']],),
[[1, 'Ade', '10.08'],
[2, 'Bo', '10.09'],
[2, 'Dee', '10.09'],
[2, 'Eli', '10.09'],
[2, 'Fay', '10.09']]),
('variant scenario 2',
([['Ade', '11.474'], ['Dee', 'DQ'], ['Fay', '11.482'], ['Cy', '11.501']],),
[[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']])],
[('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: fraction padding',
([['Fay', '10.250'], ['Eli', 'DNF'], ['Cy', '10.26']],),
[[1, 'Fay', '10.25'], [2, 'Cy', '10.26'], [None, 'Eli', 'DNF']]),
('regression: fraction padding',
([['Eli', '11.286'], ['Fay', '11.28'], ['Dee', '11.292']],),
[[1, 'Fay', '11.28'], [2, 'Eli', '11.29'], [3, 'Dee', '11.30']]),
('variant scenario 1',
([['Dee', 'DQ'], ['Ade', 'DQ'], ['Eli', '11.0'], ['Bo', '11.01']],),
[[1, 'Eli', '11.00'], [2, 'Bo', '11.01']]),
('variant scenario 2',
([['Bo', '10.874'], ['Ade', '10.884'], ['Fay', 'DQ']],),
[[1, 'Bo', '10.88'], [2, 'Ade', '10.89']])],
[('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: fraction padding',
([['Eli', '10.636'], ['Dee', '10.62'], ['Ade', '10.644']],),
[[1, 'Dee', '10.62'], [2, 'Eli', '10.64'], [3, 'Ade', '10.65']]),
('variant scenario 1',
([['Fay', '10.081'], ['Dee', '10.118'], ['Bo', '10.'], ['Eli', 'DNF'], ['Ade', '10.088']],),
[[1, 'Bo', '10.00'],
[2, 'Ade', '10.09'],
[2, 'Fay', '10.09'],
[4, 'Dee', '10.12'],
[None, 'Eli', 'DNF']]),
('variant scenario 2',
([['Bo', '9.964'],
['Eli', 'DQ'],
['Dee', '9.'],
['Cy', '9.940'],
['Fay', 'DQ'],
['Ade', '9.953']],),
[[1, 'Dee', '9.00'], [2, 'Cy', '9.94'], [3, 'Ade', '9.96'], [4, 'Bo', '9.97']])],
[('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: fraction padding',
([['Dee', '11.248'],
['Ade', '11.232'],
['Eli', '11.250'],
['Bo', '11.250'],
['Cy', '11.264'],
['Fay', '11.229']],),
[[1, 'Fay', '11.23'],
[2, 'Ade', '11.24'],
[3, 'Bo', '11.25'],
[3, 'Dee', '11.25'],
[3, 'Eli', '11.25'],
[6, 'Cy', '11.27']]),
('regression: fraction padding',
([['Fay', '10.641'], ['Bo', '10.622'], ['Cy', '10.60'], ['Ade', '10.6']],),
[[1, 'Ade', '10.60'], [1, 'Cy', '10.60'], [3, 'Bo', '10.63'], [4, 'Fay', '10.65']]),
('variant scenario 1',
([['Bo', '10.298'], ['Cy', 'DQ'], ['Fay', '10.277']],),
[[1, 'Fay', '10.28'], [2, 'Bo', '10.30']]),
('variant scenario 2',
([['Eli', '10.166'], ['Fay', '10.156'], ['Cy', '10.188']],),
[[1, 'Fay', '10.16'], [2, 'Eli', '10.17'], [3, 'Cy', '10.19']])],
[('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: fraction padding',
([['Ade', '10.599'], ['Fay', '10.590'], ['Dee', '10.593'], ['Cy', '10.588'], ['Bo', 'DQ']],),
[[1, 'Cy', '10.59'], [1, 'Fay', '10.59'], [3, 'Ade', '10.60'], [3, 'Dee', '10.60']]),
('regression: fraction padding',
([['Eli', '11.47'], ['Cy', '11.'], ['Bo', '11.471'], ['Fay', '11.46']],),
[[1, 'Cy', '11.00'], [2, 'Fay', '11.46'], [3, 'Eli', '11.47'], [4, 'Bo', '11.48']]),
('variant scenario 1',
([['Dee', '11.485'], ['Fay', '11.486'], ['Cy', '11.48'], ['Ade', '11.480']],),
[[1, 'Ade', '11.48'], [1, 'Cy', '11.48'], [3, 'Dee', '11.49'], [3, 'Fay', '11.49']]),
('variant scenario 2',
([['Bo', '11.012'], ['Fay', '11.013'], ['Dee', '10.999']],),
[[1, 'Dee', '11.00'], [2, 'Bo', '11.02'], [2, 'Fay', '11.02']])]]
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: fraction padding | [[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | [[1, 'Ade', '11.17'], [1, 'Cy', '11.17'], [None, 'Bo', 'DNF'], [None, 'Eli', 'DNF']] | Passed |
| regression: fraction padding | [[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']] | [[1, 'Dee', '9.96'], [2, 'Bo', '9.99'], [3, 'Cy', '10.00'], [3, 'Eli', '10.00']] | Passed |
| variant scenario 1 | [[1, 'Ade', '10.08'], [2, 'Bo', '10.09'], [2, 'Dee', '10.09'], [2, 'Eli', '10.09'], [2, 'Fay', '10.09']] | [[1, 'Ade', '10.08'], [2, 'Bo', '10.09'], [2, 'Dee', '10.09'], [2, 'Eli', '10.09'], [2, 'Fay', '10.09']] | Passed |
| variant scenario 2 | [[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']] | [[1, 'Ade', '11.48'], [2, 'Fay', '11.49'], [3, 'Cy', '11.51']] | Passed |
SHA-256 / 5a120abcb945b7374078ea57fe2f96ca9584a38affeb93ea5726a77de0347e2c
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.175776+00:00.
Case digest / 6f7b31687935ba9586d72cbf0b267f229ee5ae4322dade53b1ad9db812a12434