FAILURE MAP
← Case archive

FA-84086 / Sports scoring and tiebreakers / Open access

Games behind not halved · case 01

A team one win and one loss back is shown 2.0 games behind.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The combined wins and losses gap is displayed without dividing by two.

VERIFIED REPAIR

Divide the combined gap by two.

Unsuccessful approach: Using only the wins gap ignores teams that have played different numbers of games.

Case contract

Division standings. teams rows are [name, wins, losses]. Win percentage is wins / games (0 for no games) shown with three decimals and the leading zero dropped (".500", but "1.000"). Sort by win percentage, then more wins, then name. The leader is the first sorted row; games behind = ((leader_wins - wins) + (losses - leader_losses)) / 2, shown as "-" when zero and otherwise with one decimal (negative values allowed). Return [name, pct, gb] rows.

Why this case matters

Standings pages and playoff-race widgets print win percentage and games behind.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(teams):
    def pct(w, l):
        return Fraction(w, w + l) if w + l else Fraction(0)
    rows = sorted(teams, key=lambda r: (-pct(r[1], r[2]), -r[1], r[0]))
    lw, ll = rows[0][1], rows[0][2]
    out = []
    for name, w, l in rows:
        p = '%.3f' % float(pct(w, l))
        if p.startswith('0'):
            p = p[1:]
        gb2 = (lw - w) + (l - ll)
        gb = '-' if gb2 == 0 else '%.1f' % gb2
        out.append([name, p, gb])
    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 two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 17], ['Cats', 0, 34]],),
   [['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]),
  ('variant scenario 1',
   ([['Suns', 3, 25], ['Jets', 6, 50], ['Wolves', 22, 18], ['Bucks', 18, 4]],),
   [['Bucks', '.818', '-'],
    ['Wolves', '.550', '5.0'],
    ['Jets', '.107', '29.0'],
    ['Suns', '.107', '18.0']]),
  ('variant scenario 2',
   ([['Cats', 11, 25], ['Suns', 21, 0], ['Bucks', 10, 10], ['Jets', 31, 7]],),
   [['Suns', '1.000', '-'],
    ['Jets', '.816', '-1.5'],
    ['Bucks', '.500', '10.5'],
    ['Cats', '.306', '17.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Cats', 0, 10], ['Jets', 8, 2], ['Wolves', 21, 9]],),
   [['Jets', '.800', '-'], ['Wolves', '.700', '-3.0'], ['Cats', '.000', '8.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 30], ['Cats', 3, 7], ['Bucks', 17, 22]],),
   [['Bucks', '.436', '-'], ['Cats', '.300', '-0.5'], ['Wolves', '.032', '12.0']]),
  ('variant scenario 2',
   ([['Cats', 14, 6], ['Suns', 5, 5], ['Jets', 19, 12], ['Wolves', 2, 0], ['Bucks', 2, 29]],),
   [['Wolves', '1.000', '-'],
    ['Cats', '.700', '-3.0'],
    ['Jets', '.613', '-2.5'],
    ['Suns', '.500', '1.0'],
    ['Bucks', '.065', '14.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Bucks', 0, 0], ['Suns', 7, 19], ['Wolves', 3, 14], ['Cats', 4, 1]],),
   [['Cats', '.800', '-'],
    ['Suns', '.269', '7.5'],
    ['Wolves', '.176', '7.0'],
    ['Bucks', '.000', '1.5']]),
  ('variant scenario 1',
   ([['Jets', 0, 30], ['Wolves', 1, 6], ['Bucks', 25, 5], ['Suns', 0, 1]],),
   [['Bucks', '.833', '-'],
    ['Wolves', '.143', '12.5'],
    ['Jets', '.000', '25.0'],
    ['Suns', '.000', '10.5']]),
  ('variant scenario 2',
   ([['Cats', 12, 6], ['Jets', 5, 15], ['Wolves', 9, 30], ['Bucks', 1, 0], ['Suns', 6, 4]],),
   [['Bucks', '1.000', '-'],
    ['Cats', '.667', '-2.5'],
    ['Suns', '.600', '-0.5'],
    ['Jets', '.250', '5.5'],
    ['Wolves', '.231', '11.0']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Suns', 7, 3], ['Jets', 12, 14]],),
   [['Suns', '.700', '-'], ['Jets', '.462', '3.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 3], ['Bucks', 1, 19]],),
   [['Wolves', '.250', '-'], ['Bucks', '.050', '8.0']]),
  ('variant scenario 2',
   ([['Jets', 0, 1], ['Cats', 25, 5], ['Suns', 3, 8], ['Wolves', 6, 10]],),
   [['Cats', '.833', '-'],
    ['Wolves', '.375', '12.0'],
    ['Suns', '.273', '12.5'],
    ['Jets', '.000', '10.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 4], ['Jets', 14, 1]],),
   [['Jets', '.933', '-'], ['Wolves', '.000', '8.5']]),
  ('variant scenario 1',
   ([['Cats', 1, 16], ['Bucks', 1, 5], ['Jets', 4, 6], ['Suns', 0, 30], ['Wolves', 27, 11]],),
   [['Wolves', '.711', '-'],
    ['Jets', '.400', '9.0'],
    ['Bucks', '.167', '10.0'],
    ['Cats', '.059', '15.5'],
    ['Suns', '.000', '23.0']]),
  ('variant scenario 2',
   ([['Wolves', 6, 33], ['Bucks', 0, 0]],),
   [['Wolves', '.154', '-'], ['Bucks', '.000', '-13.5']])]]
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 fixtureActualExpectedOutcome
control two teams[['Cats', '.667', '-'], ['Jets', '.533', '4.0']][['Cats', '.667', '-'], ['Jets', '.533', '2.0']]Failed
boundary half game[['Cats', '.667', '-'], ['Jets', '.643', '1.0']][['Cats', '.667', '-'], ['Jets', '.643', '0.5']]Failed
boundary perfect record[['Suns', '1.000', '-'], ['Jets', '.500', '3.0']][['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]Failed
boundary no games played[['Bucks', '.000', '-'], ['Suns', '.000', '-2.0']][['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]Failed
control equal pct more wins first[['Bucks', '.500', '-'], ['Cats', '.500', '-']][['Bucks', '.500', '-'], ['Cats', '.500', '-']]Passed
regression: games behind halving[['Cats', '.000', '-'], ['Wolves', '.000', '-17.0']][['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]Failed
variant scenario 1[['Bucks', '.818', '-'], ['Wolves', '.550', '10.0'], ['Jets', '.107', '58.0'], ['Suns', '.107', '36.0']][['Bucks', '.818', '-'], ['Wolves', '.550', '5.0'], ['Jets', '.107', '29.0'], ['Suns', '.107', '18.0']]Failed
variant scenario 2[['Suns', '1.000', '-'], ['Jets', '.816', '-3.0'], ['Bucks', '.500', '21.0'], ['Cats', '.306', '35.0']][['Suns', '1.000', '-'], ['Jets', '.816', '-1.5'], ['Bucks', '.500', '10.5'], ['Cats', '.306', '17.5']]Failed

SHA-256 / 98254d74857c1aa0684b6fd95e739178f70ad571b8ad7a3ba14cf763ea0c2bbf

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(teams):
    def pct(w, l):
        return Fraction(w, w + l) if w + l else Fraction(0)
    rows = sorted(teams, key=lambda r: (-pct(r[1], r[2]), -r[1], r[0]))
    lw, ll = rows[0][1], rows[0][2]
    out = []
    for name, w, l in rows:
        p = '%.3f' % float(pct(w, l))
        if p.startswith('0'):
            p = p[1:]
        gb2 = 2 * (lw - w)
        gb = '-' if gb2 == 0 else '%.1f' % (gb2 / 2)
        out.append([name, p, gb])
    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 two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 17], ['Cats', 0, 34]],),
   [['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]),
  ('variant scenario 1',
   ([['Suns', 3, 25], ['Jets', 6, 50], ['Wolves', 22, 18], ['Bucks', 18, 4]],),
   [['Bucks', '.818', '-'],
    ['Wolves', '.550', '5.0'],
    ['Jets', '.107', '29.0'],
    ['Suns', '.107', '18.0']]),
  ('variant scenario 2',
   ([['Cats', 11, 25], ['Suns', 21, 0], ['Bucks', 10, 10], ['Jets', 31, 7]],),
   [['Suns', '1.000', '-'],
    ['Jets', '.816', '-1.5'],
    ['Bucks', '.500', '10.5'],
    ['Cats', '.306', '17.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Cats', 0, 10], ['Jets', 8, 2], ['Wolves', 21, 9]],),
   [['Jets', '.800', '-'], ['Wolves', '.700', '-3.0'], ['Cats', '.000', '8.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 30], ['Cats', 3, 7], ['Bucks', 17, 22]],),
   [['Bucks', '.436', '-'], ['Cats', '.300', '-0.5'], ['Wolves', '.032', '12.0']]),
  ('variant scenario 2',
   ([['Cats', 14, 6], ['Suns', 5, 5], ['Jets', 19, 12], ['Wolves', 2, 0], ['Bucks', 2, 29]],),
   [['Wolves', '1.000', '-'],
    ['Cats', '.700', '-3.0'],
    ['Jets', '.613', '-2.5'],
    ['Suns', '.500', '1.0'],
    ['Bucks', '.065', '14.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Bucks', 0, 0], ['Suns', 7, 19], ['Wolves', 3, 14], ['Cats', 4, 1]],),
   [['Cats', '.800', '-'],
    ['Suns', '.269', '7.5'],
    ['Wolves', '.176', '7.0'],
    ['Bucks', '.000', '1.5']]),
  ('variant scenario 1',
   ([['Jets', 0, 30], ['Wolves', 1, 6], ['Bucks', 25, 5], ['Suns', 0, 1]],),
   [['Bucks', '.833', '-'],
    ['Wolves', '.143', '12.5'],
    ['Jets', '.000', '25.0'],
    ['Suns', '.000', '10.5']]),
  ('variant scenario 2',
   ([['Cats', 12, 6], ['Jets', 5, 15], ['Wolves', 9, 30], ['Bucks', 1, 0], ['Suns', 6, 4]],),
   [['Bucks', '1.000', '-'],
    ['Cats', '.667', '-2.5'],
    ['Suns', '.600', '-0.5'],
    ['Jets', '.250', '5.5'],
    ['Wolves', '.231', '11.0']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Suns', 7, 3], ['Jets', 12, 14]],),
   [['Suns', '.700', '-'], ['Jets', '.462', '3.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 3], ['Bucks', 1, 19]],),
   [['Wolves', '.250', '-'], ['Bucks', '.050', '8.0']]),
  ('variant scenario 2',
   ([['Jets', 0, 1], ['Cats', 25, 5], ['Suns', 3, 8], ['Wolves', 6, 10]],),
   [['Cats', '.833', '-'],
    ['Wolves', '.375', '12.0'],
    ['Suns', '.273', '12.5'],
    ['Jets', '.000', '10.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 4], ['Jets', 14, 1]],),
   [['Jets', '.933', '-'], ['Wolves', '.000', '8.5']]),
  ('variant scenario 1',
   ([['Cats', 1, 16], ['Bucks', 1, 5], ['Jets', 4, 6], ['Suns', 0, 30], ['Wolves', 27, 11]],),
   [['Wolves', '.711', '-'],
    ['Jets', '.400', '9.0'],
    ['Bucks', '.167', '10.0'],
    ['Cats', '.059', '15.5'],
    ['Suns', '.000', '23.0']]),
  ('variant scenario 2',
   ([['Wolves', 6, 33], ['Bucks', 0, 0]],),
   [['Wolves', '.154', '-'], ['Bucks', '.000', '-13.5']])]]
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 fixtureActualExpectedOutcome
control two teams[['Cats', '.667', '-'], ['Jets', '.533', '2.0']][['Cats', '.667', '-'], ['Jets', '.533', '2.0']]Passed
boundary half game[['Cats', '.667', '-'], ['Jets', '.643', '1.0']][['Cats', '.667', '-'], ['Jets', '.643', '0.5']]Failed
boundary perfect record[['Suns', '1.000', '-'], ['Jets', '.500', '2.0']][['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]Failed
boundary no games played[['Bucks', '.000', '-'], ['Suns', '.000', '-']][['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]Failed
control equal pct more wins first[['Bucks', '.500', '-'], ['Cats', '.500', '2.0']][['Bucks', '.500', '-'], ['Cats', '.500', '-']]Failed
regression: games behind halving[['Cats', '.000', '-'], ['Wolves', '.000', '-']][['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]Failed
variant scenario 1[['Bucks', '.818', '-'], ['Wolves', '.550', '-4.0'], ['Jets', '.107', '12.0'], ['Suns', '.107', '15.0']][['Bucks', '.818', '-'], ['Wolves', '.550', '5.0'], ['Jets', '.107', '29.0'], ['Suns', '.107', '18.0']]Failed
variant scenario 2[['Suns', '1.000', '-'], ['Jets', '.816', '-10.0'], ['Bucks', '.500', '11.0'], ['Cats', '.306', '10.0']][['Suns', '1.000', '-'], ['Jets', '.816', '-1.5'], ['Bucks', '.500', '10.5'], ['Cats', '.306', '17.5']]Failed

SHA-256 / 509b7e09afd011c09d017dcfe6d5a8fdc8a987583b425a37be5584288bb40ec1

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(teams):
    def pct(w, l):
        return Fraction(w, w + l) if w + l else Fraction(0)
    rows = sorted(teams, key=lambda r: (-pct(r[1], r[2]), -r[1], r[0]))
    lw, ll = rows[0][1], rows[0][2]
    out = []
    for name, w, l in rows:
        p = '%.3f' % float(pct(w, l))
        if p.startswith('0'):
            p = p[1:]
        gb2 = (lw - w) + (l - ll)
        gb = '-' if gb2 == 0 else '%.1f' % (gb2 / 2)
        out.append([name, p, gb])
    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 two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 17], ['Cats', 0, 34]],),
   [['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]),
  ('variant scenario 1',
   ([['Suns', 3, 25], ['Jets', 6, 50], ['Wolves', 22, 18], ['Bucks', 18, 4]],),
   [['Bucks', '.818', '-'],
    ['Wolves', '.550', '5.0'],
    ['Jets', '.107', '29.0'],
    ['Suns', '.107', '18.0']]),
  ('variant scenario 2',
   ([['Cats', 11, 25], ['Suns', 21, 0], ['Bucks', 10, 10], ['Jets', 31, 7]],),
   [['Suns', '1.000', '-'],
    ['Jets', '.816', '-1.5'],
    ['Bucks', '.500', '10.5'],
    ['Cats', '.306', '17.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Cats', 0, 10], ['Jets', 8, 2], ['Wolves', 21, 9]],),
   [['Jets', '.800', '-'], ['Wolves', '.700', '-3.0'], ['Cats', '.000', '8.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 30], ['Cats', 3, 7], ['Bucks', 17, 22]],),
   [['Bucks', '.436', '-'], ['Cats', '.300', '-0.5'], ['Wolves', '.032', '12.0']]),
  ('variant scenario 2',
   ([['Cats', 14, 6], ['Suns', 5, 5], ['Jets', 19, 12], ['Wolves', 2, 0], ['Bucks', 2, 29]],),
   [['Wolves', '1.000', '-'],
    ['Cats', '.700', '-3.0'],
    ['Jets', '.613', '-2.5'],
    ['Suns', '.500', '1.0'],
    ['Bucks', '.065', '14.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Bucks', 0, 0], ['Suns', 7, 19], ['Wolves', 3, 14], ['Cats', 4, 1]],),
   [['Cats', '.800', '-'],
    ['Suns', '.269', '7.5'],
    ['Wolves', '.176', '7.0'],
    ['Bucks', '.000', '1.5']]),
  ('variant scenario 1',
   ([['Jets', 0, 30], ['Wolves', 1, 6], ['Bucks', 25, 5], ['Suns', 0, 1]],),
   [['Bucks', '.833', '-'],
    ['Wolves', '.143', '12.5'],
    ['Jets', '.000', '25.0'],
    ['Suns', '.000', '10.5']]),
  ('variant scenario 2',
   ([['Cats', 12, 6], ['Jets', 5, 15], ['Wolves', 9, 30], ['Bucks', 1, 0], ['Suns', 6, 4]],),
   [['Bucks', '1.000', '-'],
    ['Cats', '.667', '-2.5'],
    ['Suns', '.600', '-0.5'],
    ['Jets', '.250', '5.5'],
    ['Wolves', '.231', '11.0']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Suns', 7, 3], ['Jets', 12, 14]],),
   [['Suns', '.700', '-'], ['Jets', '.462', '3.0']]),
  ('variant scenario 1',
   ([['Wolves', 1, 3], ['Bucks', 1, 19]],),
   [['Wolves', '.250', '-'], ['Bucks', '.050', '8.0']]),
  ('variant scenario 2',
   ([['Jets', 0, 1], ['Cats', 25, 5], ['Suns', 3, 8], ['Wolves', 6, 10]],),
   [['Cats', '.833', '-'],
    ['Wolves', '.375', '12.0'],
    ['Suns', '.273', '12.5'],
    ['Jets', '.000', '10.5']])],
 [('control two teams',
   ([['Cats', 10, 5], ['Jets', 8, 7]],),
   [['Cats', '.667', '-'], ['Jets', '.533', '2.0']]),
  ('boundary half game',
   ([['Cats', 10, 5], ['Jets', 9, 5]],),
   [['Cats', '.667', '-'], ['Jets', '.643', '0.5']]),
  ('boundary perfect record',
   ([['Suns', 3, 0], ['Jets', 1, 1]],),
   [['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]),
  ('boundary no games played',
   ([['Suns', 0, 0], ['Bucks', 0, 2]],),
   [['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]),
  ('control equal pct more wins first',
   ([['Cats', 2, 2], ['Bucks', 4, 4]],),
   [['Bucks', '.500', '-'], ['Cats', '.500', '-']]),
  ('regression: games behind halving',
   ([['Wolves', 0, 4], ['Jets', 14, 1]],),
   [['Jets', '.933', '-'], ['Wolves', '.000', '8.5']]),
  ('variant scenario 1',
   ([['Cats', 1, 16], ['Bucks', 1, 5], ['Jets', 4, 6], ['Suns', 0, 30], ['Wolves', 27, 11]],),
   [['Wolves', '.711', '-'],
    ['Jets', '.400', '9.0'],
    ['Bucks', '.167', '10.0'],
    ['Cats', '.059', '15.5'],
    ['Suns', '.000', '23.0']]),
  ('variant scenario 2',
   ([['Wolves', 6, 33], ['Bucks', 0, 0]],),
   [['Wolves', '.154', '-'], ['Bucks', '.000', '-13.5']])]]
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 fixtureActualExpectedOutcome
control two teams[['Cats', '.667', '-'], ['Jets', '.533', '2.0']][['Cats', '.667', '-'], ['Jets', '.533', '2.0']]Passed
boundary half game[['Cats', '.667', '-'], ['Jets', '.643', '0.5']][['Cats', '.667', '-'], ['Jets', '.643', '0.5']]Passed
boundary perfect record[['Suns', '1.000', '-'], ['Jets', '.500', '1.5']][['Suns', '1.000', '-'], ['Jets', '.500', '1.5']]Passed
boundary no games played[['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']][['Bucks', '.000', '-'], ['Suns', '.000', '-1.0']]Passed
control equal pct more wins first[['Bucks', '.500', '-'], ['Cats', '.500', '-']][['Bucks', '.500', '-'], ['Cats', '.500', '-']]Passed
regression: games behind halving[['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']][['Cats', '.000', '-'], ['Wolves', '.000', '-8.5']]Passed
variant scenario 1[['Bucks', '.818', '-'], ['Wolves', '.550', '5.0'], ['Jets', '.107', '29.0'], ['Suns', '.107', '18.0']][['Bucks', '.818', '-'], ['Wolves', '.550', '5.0'], ['Jets', '.107', '29.0'], ['Suns', '.107', '18.0']]Passed
variant scenario 2[['Suns', '1.000', '-'], ['Jets', '.816', '-1.5'], ['Bucks', '.500', '10.5'], ['Cats', '.306', '17.5']][['Suns', '1.000', '-'], ['Jets', '.816', '-1.5'], ['Bucks', '.500', '10.5'], ['Cats', '.306', '17.5']]Passed

SHA-256 / ea817dd76a657232f85749684a17b421270b0371bd5c8aefb6e992398f968efc

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:27.655096+00:00.

Case digest / 8bca0ca892c47141a375c16fcf20f54aed3dd8405b809f99ada385f82ea63db6