FAILURE MAP
← Case archive

FA-85036 / Fantasy sports scoring / Open access

Leftover cents from a tie split disappear · case 01

Three entries sharing 1000 cents receive 333 each and one cent is never paid.

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

ROOT CAUSE

The split floors the share and drops the remainder.

VERIFIED REPAIR

Distribute the remainder one cent each to tied entries in id order.

Unsuccessful approach: Handing the whole remainder to the first entry overpays it when two or more cents remain.

Case contract

Daily contest entries are [entry id, score in hundredths]; payouts[r] is the prize in cents for finishing position r (0-based), positions past the list pay 0. Entries with equal scores share the positions they jointly occupy: their prizes are summed and split equally, whole cents only, with leftover cents given one each to the tied entries in ascending id order. Return id -> cents for entries receiving more than 0.

Why this case matters

Tie splitting in paid contests moves real money; cent remainders and the pooled positions must be exact.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(entries, payouts):
    ordered = sorted(entries, key=lambda e: (-e[1], e[0]))
    out = {}
    i = 0
    while i < len(ordered):
        j = i
        while j < len(ordered) and ordered[j][1] == ordered[i][1]:
            j += 1
        pool = sum(payouts[i:j])
        group = sorted(e[0] for e in ordered[i:j])
        share, extra = pool // len(group), 0
        for k, eid in enumerate(group):
            amt = share + (1 if k < extra else 0)
            if amt > 0:
                out[eid] = amt
        i = j
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: remainder cents',
   [[['e19', 1333], ['e05', 1333], ['e18', 1333], ['e01', 1333]], [500, 100, 2]],
   {'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}),
  ('partial repair probe: remainder cents',
   [[['e25', 1333], ['e16', 1326], ['e05', 1333], ['e24', 1330], ['e29', 1278], ['e06', 1333], ['e03', 1328],
     ['e12', 1328]],
    [301, 199]],
   {'e05': 167, 'e06': 167, 'e25': 166}),
  ('second regression',
   [[['e15', 1420], ['e02', 1365], ['e17', 1410], ['e18', 1417], ['e14', 1365], ['e12', 1410], ['e03', 1415],
     ['e27', 1420]],
    [1000, 77, 77, 2]],
   {'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}),
  ('normal control 1',
   [[['e11', 1333], ['e26', 1333], ['e14', 1333], ['e03', 1330], ['e09', 1326], ['e23', 1330], ['e06', 1328],
     ['e02', 1330]],
    [301, 100, 1]],
   {'e11': 134, 'e14': 134, 'e26': 134}),
  ('normal control 2', [[['e18', 1410], ['e13', 1415], ['e14', 1415], ['e05', 1415]], [501, 500, 301]],
   {'e05': 434, 'e13': 434, 'e14': 434}),
  ('normal control 3',
   [[['e05', 1323], ['e17', 1328], ['e09', 1330], ['e13', 1328], ['e02', 1333], ['e26', 1333], ['e01', 1278],
     ['e12', 1330]],
    [1000, 500]],
   {'e02': 750, 'e26': 750}),
  ('normal control 4', [[['e03', 1500], ['e24', 1500], ['e25', 1497]], [199, 199, 77, 77, 1]],
   {'e03': 199, 'e24': 199, 'e25': 77})],
 [('regression: remainder cents',
   [[['e04', 1410], ['e16', 1420], ['e14', 1415], ['e11', 1420], ['e20', 1410]], [500, 199, 77, 1, 1]],
   {'e04': 1, 'e11': 350, 'e14': 77, 'e16': 349, 'e20': 1}),
  ('partial repair probe: remainder cents',
   [[['e11', 1490], ['e07', 1490], ['e04', 1500], ['e26', 1500], ['e14', 1500], ['e22', 1495], ['e25', 1500],
     ['e20', 1500]],
    [301, 301]],
   {'e04': 121, 'e14': 121, 'e20': 120, 'e25': 120, 'e26': 120}),
  ('second regression',
   [[['e02', 1445], ['e13', 1495], ['e24', 1493], ['e21', 1495], ['e11', 1495], ['e07', 1500], ['e09', 1495],
     ['e29', 1500]],
    [500, 100, 1]],
   {'e07': 300, 'e09': 1, 'e29': 300}),
  ('normal control 1',
   [[['e26', 1326], ['e23', 1333], ['e08', 1323], ['e20', 1333], ['e29', 1278], ['e13', 1326]],
    [501, 301, 250, 100]],
   {'e13': 175, 'e20': 401, 'e23': 401, 'e26': 175}),
  ('normal control 2', [[['e22', 1278], ['e12', 1278], ['e24', 1328], ['e16', 1333]], [77, 77]],
   {'e16': 77, 'e24': 77}),
  ('normal control 3',
   [[['e16', 1365], ['e12', 1415], ['e14', 1365], ['e18', 1420], ['e13', 1420], ['e26', 1417], ['e22', 1410],
     ['e20', 1420], ['e10', 1365]],
    [501, 500, 199, 77, 2]],
   {'e12': 2, 'e13': 400, 'e18': 400, 'e20': 400, 'e26': 77}),
  ('normal control 4',
   [[['e02', 1490], ['e22', 1445], ['e25', 1490], ['e17', 1500], ['e26', 1493], ['e23', 1445]], [1000, 1]],
   {'e17': 1000, 'e26': 1})],
 [('regression: remainder cents', [[['e19', 1417], ['e17', 1417], ['e18', 1420], ['e29', 1365]], [1000, 199]],
   {'e17': 100, 'e18': 1000, 'e19': 99}),
  ('partial repair probe: remainder cents',
   [[['e15', 1330], ['e17', 1326], ['e09', 1278], ['e22', 1333], ['e26', 1333], ['e07', 1333], ['e08', 1333],
     ['e25', 1333], ['e24', 1330]],
    [501, 500, 301, 250, 77]],
   {'e07': 326, 'e08': 326, 'e22': 326, 'e25': 326, 'e26': 325}),
  ('second regression',
   [[['e02', 1445], ['e28', 1493], ['e19', 1493], ['e15', 1495], ['e11', 1445], ['e29', 1500], ['e03', 1500],
     ['e26', 1500], ['e18', 1493]],
    [100, 100, 77, 2]],
   {'e03': 93, 'e15': 2, 'e26': 92, 'e29': 92}),
  ('normal control 1',
   [[['e02', 1493], ['e23', 1497], ['e05', 1490], ['e19', 1445], ['e06', 1493], ['e09', 1493]], [250, 2, 1]],
   {'e02': 1, 'e06': 1, 'e09': 1, 'e23': 250}),
  ('normal control 2',
   [[['e28', 1493], ['e05', 1500], ['e20', 1500], ['e16', 1493], ['e01', 1445], ['e07', 1500], ['e26', 1445],
     ['e21', 1495]],
    [1000, 301, 100, 1]],
   {'e05': 467, 'e07': 467, 'e20': 467, 'e21': 1}),
  ('normal control 3',
   [[['e14', 1328], ['e03', 1278], ['e10', 1328], ['e21', 1333], ['e22', 1323]], [1000, 500, 100, 100, 77]],
   {'e03': 77, 'e10': 300, 'e14': 300, 'e21': 1000, 'e22': 100}),
  ('normal control 4', [[['e01', 1333], ['e22', 1328], ['e15', 1333], ['e02', 1326]], [1000, 500, 2, 1]],
   {'e01': 750, 'e02': 1, 'e15': 750, 'e22': 2})],
 [('regression: remainder cents',
   [[['e08', 1323], ['e27', 1333], ['e20', 1330], ['e26', 1330], ['e14', 1333], ['e09', 1328], ['e19', 1333],
     ['e25', 1323], ['e28', 1333]],
    [1000, 250, 199, 199, 77]],
   {'e14': 412, 'e19': 412, 'e20': 39, 'e26': 38, 'e27': 412, 'e28': 412}),
  ('partial repair probe: remainder cents',
   [[['e09', 1278], ['e02', 1328], ['e21', 1333], ['e06', 1328], ['e11', 1328]], [1000, 500, 500, 100]],
   {'e02': 367, 'e06': 367, 'e11': 366, 'e21': 1000}),
  ('second regression',
   [[['e29', 1500], ['e22', 1493], ['e01', 1500], ['e10', 1493], ['e21', 1445], ['e24', 1490], ['e27', 1500],
     ['e09', 1495], ['e08', 1497]],
    [501, 500, 77, 1]],
   {'e01': 360, 'e08': 1, 'e27': 359, 'e29': 359}),
  ('normal control 1', [[['e22', 1410], ['e08', 1413], ['e10', 1365], ['e07', 1415]], [2, 1, 1]],
   {'e07': 2, 'e08': 1, 'e22': 1}),
  ('normal control 2',
   [[['e23', 1420], ['e02', 1413], ['e14', 1415], ['e15', 1415]], [1000, 1000, 1000, 199, 2]],
   {'e02': 199, 'e14': 1000, 'e15': 1000, 'e23': 1000}),
  ('normal control 3', [[['e17', 1328], ['e22', 1326], ['e08', 1330]], [500, 250, 199, 100, 77]],
   {'e08': 500, 'e17': 250, 'e22': 199}),
  ('normal control 4',
   [[['e12', 1490], ['e17', 1500], ['e07', 1493], ['e05', 1500], ['e18', 1500], ['e11', 1495], ['e06', 1500],
     ['e24', 1495], ['e28', 1500]],
    [501, 199, 100, 100]],
   {'e05': 180, 'e06': 180, 'e17': 180, 'e18': 180, 'e28': 180})],
 [('regression: remainder cents',
   [[['e13', 1410], ['e25', 1413], ['e09', 1413], ['e16', 1415], ['e24', 1410], ['e08', 1420], ['e27', 1410],
     ['e01', 1410]],
    [250, 199, 77, 77, 2]],
   {'e01': 1, 'e08': 250, 'e09': 77, 'e13': 1, 'e16': 199, 'e25': 77}),
  ('partial repair probe: remainder cents',
   [[['e12', 1413], ['e23', 1410], ['e25', 1410], ['e24', 1417], ['e02', 1365], ['e06', 1415], ['e11', 1410]],
    [1000, 250, 199, 77]],
   {'e06': 250, 'e11': 26, 'e12': 199, 'e23': 26, 'e24': 1000, 'e25': 25}),
  ('second regression',
   [[['e06', 1328], ['e12', 1328], ['e09', 1333], ['e18', 1328]], [250, 250, 100, 77, 2]],
   {'e06': 143, 'e09': 250, 'e12': 142, 'e18': 142}),
  ('normal control 1', [[['e01', 1278], ['e25', 1326], ['e23', 1328]], [199, 77]], {'e23': 199, 'e25': 77}),
  ('normal control 2', [[['e23', 1417], ['e19', 1413], ['e08', 1420]], [1000, 501, 501, 199]],
   {'e08': 1000, 'e19': 501, 'e23': 501}),
  ('normal control 3',
   [[['e23', 1493], ['e10', 1495], ['e13', 1495], ['e12', 1490], ['e15', 1495], ['e02', 1500], ['e25', 1495],
     ['e18', 1445]],
    [1000, 501, 199, 199, 1]],
   {'e02': 1000, 'e10': 225, 'e13': 225, 'e15': 225, 'e25': 225}),
  ('normal control 4', [[['e01', 1415], ['e21', 1415], ['e15', 1365], ['e08', 1365]], [250, 2]],
   {'e01': 126, 'e21': 126})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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
regression: remainder cents{'e01': 150, 'e05': 150, 'e18': 150, 'e19': 150}{'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}Failed
partial repair probe: remainder cents{'e05': 166, 'e06': 166, 'e25': 166}{'e05': 167, 'e06': 167, 'e25': 166}Failed
second regression{'e03': 2, 'e15': 538, 'e18': 77, 'e27': 538}{'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}Failed
normal control 1{'e11': 134, 'e14': 134, 'e26': 134}{'e11': 134, 'e14': 134, 'e26': 134}Passed
normal control 2{'e05': 434, 'e13': 434, 'e14': 434}{'e05': 434, 'e13': 434, 'e14': 434}Passed
normal control 3{'e02': 750, 'e26': 750}{'e02': 750, 'e26': 750}Passed
normal control 4{'e03': 199, 'e24': 199, 'e25': 77}{'e03': 199, 'e24': 199, 'e25': 77}Passed

SHA-256 / 2fbb1e432c4fa00f928b218bde85fd3b5c9f104f30d58e5c8d00b9f5ae2550cc

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(entries, payouts):
    ordered = sorted(entries, key=lambda e: (-e[1], e[0]))
    out = {}
    i = 0
    while i < len(ordered):
        j = i
        while j < len(ordered) and ordered[j][1] == ordered[i][1]:
            j += 1
        pool = sum(payouts[i:j])
        group = sorted(e[0] for e in ordered[i:j])
        share, extra = divmod(pool, len(group))
        for k, eid in enumerate(group):
            amt = share + (extra if k == 0 else 0)
            if amt > 0:
                out[eid] = amt
        i = j
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: remainder cents',
   [[['e19', 1333], ['e05', 1333], ['e18', 1333], ['e01', 1333]], [500, 100, 2]],
   {'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}),
  ('partial repair probe: remainder cents',
   [[['e25', 1333], ['e16', 1326], ['e05', 1333], ['e24', 1330], ['e29', 1278], ['e06', 1333], ['e03', 1328],
     ['e12', 1328]],
    [301, 199]],
   {'e05': 167, 'e06': 167, 'e25': 166}),
  ('second regression',
   [[['e15', 1420], ['e02', 1365], ['e17', 1410], ['e18', 1417], ['e14', 1365], ['e12', 1410], ['e03', 1415],
     ['e27', 1420]],
    [1000, 77, 77, 2]],
   {'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}),
  ('normal control 1',
   [[['e11', 1333], ['e26', 1333], ['e14', 1333], ['e03', 1330], ['e09', 1326], ['e23', 1330], ['e06', 1328],
     ['e02', 1330]],
    [301, 100, 1]],
   {'e11': 134, 'e14': 134, 'e26': 134}),
  ('normal control 2', [[['e18', 1410], ['e13', 1415], ['e14', 1415], ['e05', 1415]], [501, 500, 301]],
   {'e05': 434, 'e13': 434, 'e14': 434}),
  ('normal control 3',
   [[['e05', 1323], ['e17', 1328], ['e09', 1330], ['e13', 1328], ['e02', 1333], ['e26', 1333], ['e01', 1278],
     ['e12', 1330]],
    [1000, 500]],
   {'e02': 750, 'e26': 750}),
  ('normal control 4', [[['e03', 1500], ['e24', 1500], ['e25', 1497]], [199, 199, 77, 77, 1]],
   {'e03': 199, 'e24': 199, 'e25': 77})],
 [('regression: remainder cents',
   [[['e04', 1410], ['e16', 1420], ['e14', 1415], ['e11', 1420], ['e20', 1410]], [500, 199, 77, 1, 1]],
   {'e04': 1, 'e11': 350, 'e14': 77, 'e16': 349, 'e20': 1}),
  ('partial repair probe: remainder cents',
   [[['e11', 1490], ['e07', 1490], ['e04', 1500], ['e26', 1500], ['e14', 1500], ['e22', 1495], ['e25', 1500],
     ['e20', 1500]],
    [301, 301]],
   {'e04': 121, 'e14': 121, 'e20': 120, 'e25': 120, 'e26': 120}),
  ('second regression',
   [[['e02', 1445], ['e13', 1495], ['e24', 1493], ['e21', 1495], ['e11', 1495], ['e07', 1500], ['e09', 1495],
     ['e29', 1500]],
    [500, 100, 1]],
   {'e07': 300, 'e09': 1, 'e29': 300}),
  ('normal control 1',
   [[['e26', 1326], ['e23', 1333], ['e08', 1323], ['e20', 1333], ['e29', 1278], ['e13', 1326]],
    [501, 301, 250, 100]],
   {'e13': 175, 'e20': 401, 'e23': 401, 'e26': 175}),
  ('normal control 2', [[['e22', 1278], ['e12', 1278], ['e24', 1328], ['e16', 1333]], [77, 77]],
   {'e16': 77, 'e24': 77}),
  ('normal control 3',
   [[['e16', 1365], ['e12', 1415], ['e14', 1365], ['e18', 1420], ['e13', 1420], ['e26', 1417], ['e22', 1410],
     ['e20', 1420], ['e10', 1365]],
    [501, 500, 199, 77, 2]],
   {'e12': 2, 'e13': 400, 'e18': 400, 'e20': 400, 'e26': 77}),
  ('normal control 4',
   [[['e02', 1490], ['e22', 1445], ['e25', 1490], ['e17', 1500], ['e26', 1493], ['e23', 1445]], [1000, 1]],
   {'e17': 1000, 'e26': 1})],
 [('regression: remainder cents', [[['e19', 1417], ['e17', 1417], ['e18', 1420], ['e29', 1365]], [1000, 199]],
   {'e17': 100, 'e18': 1000, 'e19': 99}),
  ('partial repair probe: remainder cents',
   [[['e15', 1330], ['e17', 1326], ['e09', 1278], ['e22', 1333], ['e26', 1333], ['e07', 1333], ['e08', 1333],
     ['e25', 1333], ['e24', 1330]],
    [501, 500, 301, 250, 77]],
   {'e07': 326, 'e08': 326, 'e22': 326, 'e25': 326, 'e26': 325}),
  ('second regression',
   [[['e02', 1445], ['e28', 1493], ['e19', 1493], ['e15', 1495], ['e11', 1445], ['e29', 1500], ['e03', 1500],
     ['e26', 1500], ['e18', 1493]],
    [100, 100, 77, 2]],
   {'e03': 93, 'e15': 2, 'e26': 92, 'e29': 92}),
  ('normal control 1',
   [[['e02', 1493], ['e23', 1497], ['e05', 1490], ['e19', 1445], ['e06', 1493], ['e09', 1493]], [250, 2, 1]],
   {'e02': 1, 'e06': 1, 'e09': 1, 'e23': 250}),
  ('normal control 2',
   [[['e28', 1493], ['e05', 1500], ['e20', 1500], ['e16', 1493], ['e01', 1445], ['e07', 1500], ['e26', 1445],
     ['e21', 1495]],
    [1000, 301, 100, 1]],
   {'e05': 467, 'e07': 467, 'e20': 467, 'e21': 1}),
  ('normal control 3',
   [[['e14', 1328], ['e03', 1278], ['e10', 1328], ['e21', 1333], ['e22', 1323]], [1000, 500, 100, 100, 77]],
   {'e03': 77, 'e10': 300, 'e14': 300, 'e21': 1000, 'e22': 100}),
  ('normal control 4', [[['e01', 1333], ['e22', 1328], ['e15', 1333], ['e02', 1326]], [1000, 500, 2, 1]],
   {'e01': 750, 'e02': 1, 'e15': 750, 'e22': 2})],
 [('regression: remainder cents',
   [[['e08', 1323], ['e27', 1333], ['e20', 1330], ['e26', 1330], ['e14', 1333], ['e09', 1328], ['e19', 1333],
     ['e25', 1323], ['e28', 1333]],
    [1000, 250, 199, 199, 77]],
   {'e14': 412, 'e19': 412, 'e20': 39, 'e26': 38, 'e27': 412, 'e28': 412}),
  ('partial repair probe: remainder cents',
   [[['e09', 1278], ['e02', 1328], ['e21', 1333], ['e06', 1328], ['e11', 1328]], [1000, 500, 500, 100]],
   {'e02': 367, 'e06': 367, 'e11': 366, 'e21': 1000}),
  ('second regression',
   [[['e29', 1500], ['e22', 1493], ['e01', 1500], ['e10', 1493], ['e21', 1445], ['e24', 1490], ['e27', 1500],
     ['e09', 1495], ['e08', 1497]],
    [501, 500, 77, 1]],
   {'e01': 360, 'e08': 1, 'e27': 359, 'e29': 359}),
  ('normal control 1', [[['e22', 1410], ['e08', 1413], ['e10', 1365], ['e07', 1415]], [2, 1, 1]],
   {'e07': 2, 'e08': 1, 'e22': 1}),
  ('normal control 2',
   [[['e23', 1420], ['e02', 1413], ['e14', 1415], ['e15', 1415]], [1000, 1000, 1000, 199, 2]],
   {'e02': 199, 'e14': 1000, 'e15': 1000, 'e23': 1000}),
  ('normal control 3', [[['e17', 1328], ['e22', 1326], ['e08', 1330]], [500, 250, 199, 100, 77]],
   {'e08': 500, 'e17': 250, 'e22': 199}),
  ('normal control 4',
   [[['e12', 1490], ['e17', 1500], ['e07', 1493], ['e05', 1500], ['e18', 1500], ['e11', 1495], ['e06', 1500],
     ['e24', 1495], ['e28', 1500]],
    [501, 199, 100, 100]],
   {'e05': 180, 'e06': 180, 'e17': 180, 'e18': 180, 'e28': 180})],
 [('regression: remainder cents',
   [[['e13', 1410], ['e25', 1413], ['e09', 1413], ['e16', 1415], ['e24', 1410], ['e08', 1420], ['e27', 1410],
     ['e01', 1410]],
    [250, 199, 77, 77, 2]],
   {'e01': 1, 'e08': 250, 'e09': 77, 'e13': 1, 'e16': 199, 'e25': 77}),
  ('partial repair probe: remainder cents',
   [[['e12', 1413], ['e23', 1410], ['e25', 1410], ['e24', 1417], ['e02', 1365], ['e06', 1415], ['e11', 1410]],
    [1000, 250, 199, 77]],
   {'e06': 250, 'e11': 26, 'e12': 199, 'e23': 26, 'e24': 1000, 'e25': 25}),
  ('second regression',
   [[['e06', 1328], ['e12', 1328], ['e09', 1333], ['e18', 1328]], [250, 250, 100, 77, 2]],
   {'e06': 143, 'e09': 250, 'e12': 142, 'e18': 142}),
  ('normal control 1', [[['e01', 1278], ['e25', 1326], ['e23', 1328]], [199, 77]], {'e23': 199, 'e25': 77}),
  ('normal control 2', [[['e23', 1417], ['e19', 1413], ['e08', 1420]], [1000, 501, 501, 199]],
   {'e08': 1000, 'e19': 501, 'e23': 501}),
  ('normal control 3',
   [[['e23', 1493], ['e10', 1495], ['e13', 1495], ['e12', 1490], ['e15', 1495], ['e02', 1500], ['e25', 1495],
     ['e18', 1445]],
    [1000, 501, 199, 199, 1]],
   {'e02': 1000, 'e10': 225, 'e13': 225, 'e15': 225, 'e25': 225}),
  ('normal control 4', [[['e01', 1415], ['e21', 1415], ['e15', 1365], ['e08', 1365]], [250, 2]],
   {'e01': 126, 'e21': 126})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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
regression: remainder cents{'e01': 152, 'e05': 150, 'e18': 150, 'e19': 150}{'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}Failed
partial repair probe: remainder cents{'e05': 168, 'e06': 166, 'e25': 166}{'e05': 167, 'e06': 167, 'e25': 166}Failed
second regression{'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}{'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}Passed
normal control 1{'e11': 134, 'e14': 134, 'e26': 134}{'e11': 134, 'e14': 134, 'e26': 134}Passed
normal control 2{'e05': 434, 'e13': 434, 'e14': 434}{'e05': 434, 'e13': 434, 'e14': 434}Passed
normal control 3{'e02': 750, 'e26': 750}{'e02': 750, 'e26': 750}Passed
normal control 4{'e03': 199, 'e24': 199, 'e25': 77}{'e03': 199, 'e24': 199, 'e25': 77}Passed

SHA-256 / 413c6c8b0237a86c1a18f7658e59117a23df831d693d488e60925fd6f2af1480

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(entries, payouts):
    ordered = sorted(entries, key=lambda e: (-e[1], e[0]))
    out = {}
    i = 0
    while i < len(ordered):
        j = i
        while j < len(ordered) and ordered[j][1] == ordered[i][1]:
            j += 1
        pool = sum(payouts[i:j])
        group = sorted(e[0] for e in ordered[i:j])
        share, extra = divmod(pool, len(group))
        for k, eid in enumerate(group):
            amt = share + (1 if k < extra else 0)
            if amt > 0:
                out[eid] = amt
        i = j
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: remainder cents',
   [[['e19', 1333], ['e05', 1333], ['e18', 1333], ['e01', 1333]], [500, 100, 2]],
   {'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}),
  ('partial repair probe: remainder cents',
   [[['e25', 1333], ['e16', 1326], ['e05', 1333], ['e24', 1330], ['e29', 1278], ['e06', 1333], ['e03', 1328],
     ['e12', 1328]],
    [301, 199]],
   {'e05': 167, 'e06': 167, 'e25': 166}),
  ('second regression',
   [[['e15', 1420], ['e02', 1365], ['e17', 1410], ['e18', 1417], ['e14', 1365], ['e12', 1410], ['e03', 1415],
     ['e27', 1420]],
    [1000, 77, 77, 2]],
   {'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}),
  ('normal control 1',
   [[['e11', 1333], ['e26', 1333], ['e14', 1333], ['e03', 1330], ['e09', 1326], ['e23', 1330], ['e06', 1328],
     ['e02', 1330]],
    [301, 100, 1]],
   {'e11': 134, 'e14': 134, 'e26': 134}),
  ('normal control 2', [[['e18', 1410], ['e13', 1415], ['e14', 1415], ['e05', 1415]], [501, 500, 301]],
   {'e05': 434, 'e13': 434, 'e14': 434}),
  ('normal control 3',
   [[['e05', 1323], ['e17', 1328], ['e09', 1330], ['e13', 1328], ['e02', 1333], ['e26', 1333], ['e01', 1278],
     ['e12', 1330]],
    [1000, 500]],
   {'e02': 750, 'e26': 750}),
  ('normal control 4', [[['e03', 1500], ['e24', 1500], ['e25', 1497]], [199, 199, 77, 77, 1]],
   {'e03': 199, 'e24': 199, 'e25': 77})],
 [('regression: remainder cents',
   [[['e04', 1410], ['e16', 1420], ['e14', 1415], ['e11', 1420], ['e20', 1410]], [500, 199, 77, 1, 1]],
   {'e04': 1, 'e11': 350, 'e14': 77, 'e16': 349, 'e20': 1}),
  ('partial repair probe: remainder cents',
   [[['e11', 1490], ['e07', 1490], ['e04', 1500], ['e26', 1500], ['e14', 1500], ['e22', 1495], ['e25', 1500],
     ['e20', 1500]],
    [301, 301]],
   {'e04': 121, 'e14': 121, 'e20': 120, 'e25': 120, 'e26': 120}),
  ('second regression',
   [[['e02', 1445], ['e13', 1495], ['e24', 1493], ['e21', 1495], ['e11', 1495], ['e07', 1500], ['e09', 1495],
     ['e29', 1500]],
    [500, 100, 1]],
   {'e07': 300, 'e09': 1, 'e29': 300}),
  ('normal control 1',
   [[['e26', 1326], ['e23', 1333], ['e08', 1323], ['e20', 1333], ['e29', 1278], ['e13', 1326]],
    [501, 301, 250, 100]],
   {'e13': 175, 'e20': 401, 'e23': 401, 'e26': 175}),
  ('normal control 2', [[['e22', 1278], ['e12', 1278], ['e24', 1328], ['e16', 1333]], [77, 77]],
   {'e16': 77, 'e24': 77}),
  ('normal control 3',
   [[['e16', 1365], ['e12', 1415], ['e14', 1365], ['e18', 1420], ['e13', 1420], ['e26', 1417], ['e22', 1410],
     ['e20', 1420], ['e10', 1365]],
    [501, 500, 199, 77, 2]],
   {'e12': 2, 'e13': 400, 'e18': 400, 'e20': 400, 'e26': 77}),
  ('normal control 4',
   [[['e02', 1490], ['e22', 1445], ['e25', 1490], ['e17', 1500], ['e26', 1493], ['e23', 1445]], [1000, 1]],
   {'e17': 1000, 'e26': 1})],
 [('regression: remainder cents', [[['e19', 1417], ['e17', 1417], ['e18', 1420], ['e29', 1365]], [1000, 199]],
   {'e17': 100, 'e18': 1000, 'e19': 99}),
  ('partial repair probe: remainder cents',
   [[['e15', 1330], ['e17', 1326], ['e09', 1278], ['e22', 1333], ['e26', 1333], ['e07', 1333], ['e08', 1333],
     ['e25', 1333], ['e24', 1330]],
    [501, 500, 301, 250, 77]],
   {'e07': 326, 'e08': 326, 'e22': 326, 'e25': 326, 'e26': 325}),
  ('second regression',
   [[['e02', 1445], ['e28', 1493], ['e19', 1493], ['e15', 1495], ['e11', 1445], ['e29', 1500], ['e03', 1500],
     ['e26', 1500], ['e18', 1493]],
    [100, 100, 77, 2]],
   {'e03': 93, 'e15': 2, 'e26': 92, 'e29': 92}),
  ('normal control 1',
   [[['e02', 1493], ['e23', 1497], ['e05', 1490], ['e19', 1445], ['e06', 1493], ['e09', 1493]], [250, 2, 1]],
   {'e02': 1, 'e06': 1, 'e09': 1, 'e23': 250}),
  ('normal control 2',
   [[['e28', 1493], ['e05', 1500], ['e20', 1500], ['e16', 1493], ['e01', 1445], ['e07', 1500], ['e26', 1445],
     ['e21', 1495]],
    [1000, 301, 100, 1]],
   {'e05': 467, 'e07': 467, 'e20': 467, 'e21': 1}),
  ('normal control 3',
   [[['e14', 1328], ['e03', 1278], ['e10', 1328], ['e21', 1333], ['e22', 1323]], [1000, 500, 100, 100, 77]],
   {'e03': 77, 'e10': 300, 'e14': 300, 'e21': 1000, 'e22': 100}),
  ('normal control 4', [[['e01', 1333], ['e22', 1328], ['e15', 1333], ['e02', 1326]], [1000, 500, 2, 1]],
   {'e01': 750, 'e02': 1, 'e15': 750, 'e22': 2})],
 [('regression: remainder cents',
   [[['e08', 1323], ['e27', 1333], ['e20', 1330], ['e26', 1330], ['e14', 1333], ['e09', 1328], ['e19', 1333],
     ['e25', 1323], ['e28', 1333]],
    [1000, 250, 199, 199, 77]],
   {'e14': 412, 'e19': 412, 'e20': 39, 'e26': 38, 'e27': 412, 'e28': 412}),
  ('partial repair probe: remainder cents',
   [[['e09', 1278], ['e02', 1328], ['e21', 1333], ['e06', 1328], ['e11', 1328]], [1000, 500, 500, 100]],
   {'e02': 367, 'e06': 367, 'e11': 366, 'e21': 1000}),
  ('second regression',
   [[['e29', 1500], ['e22', 1493], ['e01', 1500], ['e10', 1493], ['e21', 1445], ['e24', 1490], ['e27', 1500],
     ['e09', 1495], ['e08', 1497]],
    [501, 500, 77, 1]],
   {'e01': 360, 'e08': 1, 'e27': 359, 'e29': 359}),
  ('normal control 1', [[['e22', 1410], ['e08', 1413], ['e10', 1365], ['e07', 1415]], [2, 1, 1]],
   {'e07': 2, 'e08': 1, 'e22': 1}),
  ('normal control 2',
   [[['e23', 1420], ['e02', 1413], ['e14', 1415], ['e15', 1415]], [1000, 1000, 1000, 199, 2]],
   {'e02': 199, 'e14': 1000, 'e15': 1000, 'e23': 1000}),
  ('normal control 3', [[['e17', 1328], ['e22', 1326], ['e08', 1330]], [500, 250, 199, 100, 77]],
   {'e08': 500, 'e17': 250, 'e22': 199}),
  ('normal control 4',
   [[['e12', 1490], ['e17', 1500], ['e07', 1493], ['e05', 1500], ['e18', 1500], ['e11', 1495], ['e06', 1500],
     ['e24', 1495], ['e28', 1500]],
    [501, 199, 100, 100]],
   {'e05': 180, 'e06': 180, 'e17': 180, 'e18': 180, 'e28': 180})],
 [('regression: remainder cents',
   [[['e13', 1410], ['e25', 1413], ['e09', 1413], ['e16', 1415], ['e24', 1410], ['e08', 1420], ['e27', 1410],
     ['e01', 1410]],
    [250, 199, 77, 77, 2]],
   {'e01': 1, 'e08': 250, 'e09': 77, 'e13': 1, 'e16': 199, 'e25': 77}),
  ('partial repair probe: remainder cents',
   [[['e12', 1413], ['e23', 1410], ['e25', 1410], ['e24', 1417], ['e02', 1365], ['e06', 1415], ['e11', 1410]],
    [1000, 250, 199, 77]],
   {'e06': 250, 'e11': 26, 'e12': 199, 'e23': 26, 'e24': 1000, 'e25': 25}),
  ('second regression',
   [[['e06', 1328], ['e12', 1328], ['e09', 1333], ['e18', 1328]], [250, 250, 100, 77, 2]],
   {'e06': 143, 'e09': 250, 'e12': 142, 'e18': 142}),
  ('normal control 1', [[['e01', 1278], ['e25', 1326], ['e23', 1328]], [199, 77]], {'e23': 199, 'e25': 77}),
  ('normal control 2', [[['e23', 1417], ['e19', 1413], ['e08', 1420]], [1000, 501, 501, 199]],
   {'e08': 1000, 'e19': 501, 'e23': 501}),
  ('normal control 3',
   [[['e23', 1493], ['e10', 1495], ['e13', 1495], ['e12', 1490], ['e15', 1495], ['e02', 1500], ['e25', 1495],
     ['e18', 1445]],
    [1000, 501, 199, 199, 1]],
   {'e02': 1000, 'e10': 225, 'e13': 225, 'e15': 225, 'e25': 225}),
  ('normal control 4', [[['e01', 1415], ['e21', 1415], ['e15', 1365], ['e08', 1365]], [250, 2]],
   {'e01': 126, 'e21': 126})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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
regression: remainder cents{'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}{'e01': 151, 'e05': 151, 'e18': 150, 'e19': 150}Passed
partial repair probe: remainder cents{'e05': 167, 'e06': 167, 'e25': 166}{'e05': 167, 'e06': 167, 'e25': 166}Passed
second regression{'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}{'e03': 2, 'e15': 539, 'e18': 77, 'e27': 538}Passed
normal control 1{'e11': 134, 'e14': 134, 'e26': 134}{'e11': 134, 'e14': 134, 'e26': 134}Passed
normal control 2{'e05': 434, 'e13': 434, 'e14': 434}{'e05': 434, 'e13': 434, 'e14': 434}Passed
normal control 3{'e02': 750, 'e26': 750}{'e02': 750, 'e26': 750}Passed
normal control 4{'e03': 199, 'e24': 199, 'e25': 77}{'e03': 199, 'e24': 199, 'e25': 77}Passed

SHA-256 / dce42cd2c92a59a146f574fd91eca3cc2eddb57f9a79ebb89ef0ced6babd1c85

Verification & scope

A deterministic toy scoring contract stipulated for this example; it is not the rulebook of any real fantasy platform. 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:36.657413+00:00.

Case digest / 7790912c9340370bb3945a717d0e6d4ca184f34bed7d84e7cce4ff7366d5fd13