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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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