FA-68656 / Toll and parking fee computation / Open access
One-way bridge toll with frequent-user discount: the threshold trip itself is discounted · case 01
One-way bridge toll with frequent-user discount returns a wrong result when the threshold trip itself is discounted.
ROOT CAUSE
Discounting starts one trip early.
VERIFIED REPAIR
Restore the discount threshold rule so that the step reads `if k > x['threshold']:`.
Unsuccessful approach: Starting one trip late overcharges the first discounted trip.
Case contract
Input {trips: [[month index, direction, occupancy]], toll_dir, base, threshold, discount_pct, carpool_min}. Only trips in toll_dir are tolled. Carpools (occupancy >= carpool_min) are free and do not count. Paid trips are counted per month index (no carry-over between months); trips beyond threshold in a month pay floor(base*(100-discount)/100).
Why this case matters
Fee engines bill customers in integer cents; a wrong boundary, rounding stage or cap scope silently over- or under-charges.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
counts = {}
total = 0
for month, d, occ in x['trips']:
if d != x['toll_dir']:
continue
if occ >= x['carpool_min']:
continue
k = counts.get(month, 0) + 1
counts[month] = k
if k >= x['threshold']:
total += x['base'] * (100 - x['discount_pct']) // 100
else:
total += x['base']
return total
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 543 | 725 | Failed |
| fee oracle 1 | 1274 | 1487 | Failed |
| fee oracle 2 | 1800 | 1800 | Passed |
| fee oracle 3 | 2420 | 2660 | Failed |
| fee oracle 4 | 1800 | 1800 | Passed |
| fee oracle 5 | 4250 | 4250 | Passed |
| fee oracle 6 | 1450 | 1450 | Passed |
| fee oracle 7 | 850 | 850 | Passed |
SHA-256 / 04e9b16925449181cde3bff8bec61f53bcc23ff8d742b162c1ff00611deb6bde
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
counts = {}
total = 0
for month, d, occ in x['trips']:
if d != x['toll_dir']:
continue
if occ >= x['carpool_min']:
continue
k = counts.get(month, 0) + 1
counts[month] = k
if k > x['threshold'] + 1:
total += x['base'] * (100 - x['discount_pct']) // 100
else:
total += x['base']
return total
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 725 | 725 | Passed |
| fee oracle 1 | 1700 | 1487 | Failed |
| fee oracle 2 | 1800 | 1800 | Passed |
| fee oracle 3 | 2900 | 2660 | Failed |
| fee oracle 4 | 1800 | 1800 | Passed |
| fee oracle 5 | 4250 | 4250 | Passed |
| fee oracle 6 | 1450 | 1450 | Passed |
| fee oracle 7 | 850 | 850 | Passed |
SHA-256 / f2692ade5d5c044f28f12173803f48e258218055226b0545ee77be899ff17062
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
counts = {}
total = 0
for month, d, occ in x['trips']:
if d != x['toll_dir']:
continue
if occ >= x['carpool_min']:
continue
k = counts.get(month, 0) + 1
counts[month] = k
if k > x['threshold']:
total += x['base'] * (100 - x['discount_pct']) // 100
else:
total += x['base']
return total
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [2, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 725), ({'trips': [[13, 'E', 1], [1, 'E', 4], [13, 'E', 1], [2, 'W', 1], [2, 'W', 2], [1, 'E', 3], [13, 'E', 1], [2, 'W', 3], [1, 'E', 4], [2, 'E', 1], [2, 'E', 1], [13, 'E', 2], [13, 'E', 3]], 'toll_dir': 'W', 'base': 850, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1487), ({'trips': [[2, 'E', 4], [1, 'W', 4], [2, 'E', 4], [13, 'E', 2], [1, 'W', 3], [1, 'W', 1], [2, 'E', 4], [1, 'E', 1], [1, 'W', 3], [1, 'W', 1], [13, 'E', 1], [2, 'W', 3], [1, 'W', 4], [1, 'E', 4], [2, 'W', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 1800), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[1, 'W', 2], [1, 'E', 3], [1, 'E', 1], [1, 'W', 2], [1, 'W', 2], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1], [1, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 2}, 1800), ({'trips': [[13, 'W', 1], [1, 'W', 4], [1, 'E', 1], [1, 'W', 1], [13, 'E', 4], [13, 'W', 2], [13, 'E', 2], [1, 'W', 1], [1, 'W', 1], [1, 'W', 4], [1, 'E', 2], [1, 'W', 1], [2, 'E', 1], [2, 'E', 2]], 'toll_dir': 'E', 'base': 850, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 4250), ({'trips': [[2, 'W', 2], [13, 'E', 1], [2, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1450), ({'trips': [[1, 'W', 4], [13, 'W', 3], [1, 'W', 2], [2, 'E', 4], [1, 'W', 4], [2, 'W', 1], [1, 'W', 2], [2, 'W', 4], [13, 'W', 1], [1, 'W', 2], [2, 'W', 4], [1, 'E', 3], [1, 'E', 1]], 'toll_dir': 'E', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 3}, 850)], [({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'W', 1], [13, 'E', 1], [13, 'E', 1], [1, 'W', 2], [1, 'E', 1], [13, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 1]], 'toll_dir': 'W', 'base': 850, 'threshold': 3, 'discount_pct': 40, 'carpool_min': 2}, 2550), ({'trips': [[1, 'E', 4], [1, 'W', 1], [2, 'E', 2], [1, 'E', 1], [2, 'E', 3], [13, 'E', 2], [1, 'E', 1], [2, 'W', 3], [1, 'E', 2], [1, 'E', 1], [13, 'W', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 2175), ({'trips': [[1, 'E', 4], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 3}, 600), ({'trips': [[2, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 3], [1, 'E', 1], [2, 'W', 1], [2, 'W', 3], [1, 'W', 1], [13, 'E', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1200), ({'trips': [[13, 'E', 1], [1, 'E', 1], [1, 'E', 3], [13, 'W', 3], [13, 'W', 1], [1, 'W', 1], [1, 'W', 3], [13, 'W', 4], [1, 'E', 2], [1, 'E', 1], [13, 'E', 2], [2, 'W', 1], [1, 'E', 3], [1, 'W', 1], [13, 'W', 1], [13, 'E', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 5, 'discount_pct': 33, 'carpool_min': 3}, 3000), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'W', 1], [13, 'W', 1], [2, 'W', 2], [1, 'W', 1], [1, 'W', 1], [1, 'E', 2], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'W', 1], [1, 'W', 2], [1, 'E', 1], [1, 'E', 2], [2, 'E', 1], [1, 'W', 4], [1, 'W', 1], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 3}, 1811)], [({'trips': [[13, 'E', 1], [13, 'W', 2], [1, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 3], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 4, 'discount_pct': 33, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 4], [2, 'E', 1], [1, 'E', 3], [1, 'W', 1], [2, 'W', 1], [2, 'W', 2], [13, 'E', 1], [1, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2900), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 1], [2, 'W', 4], [13, 'W', 3], [1, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 1, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'W', 2], [1, 'E', 2], [2, 'E', 1], [13, 'W', 1], [13, 'W', 3], [1, 'E', 1], [1, 'W', 1], [1, 'W', 4]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 2850), ({'trips': [[1, 'E', 1], [13, 'E', 4], [1, 'E', 4], [1, 'W', 3], [2, 'E', 4], [2, 'W', 1], [1, 'W', 3], [1, 'E', 2], [13, 'W', 1], [1, 'W', 1], [13, 'E', 1], [13, 'W', 4], [1, 'E', 3], [1, 'W', 3]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 1800), ({'trips': [[2, 'W', 4], [1, 'E', 3], [1, 'W', 4], [1, 'E', 1], [1, 'E', 1], [1, 'E', 2], [1, 'W', 1], [1, 'W', 2], [13, 'W', 4], [13, 'E', 3], [1, 'E', 3], [2, 'E', 1], [1, 'W', 2], [13, 'E', 2], [2, 'E', 1]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 2900)], [({'trips': [[2, 'E', 1], [13, 'W', 1], [13, 'W', 4], [13, 'E', 1]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 3}, 600), ({'trips': [[2, 'E', 1], [1, 'E', 3], [13, 'E', 1], [1, 'E', 1], [13, 'W', 4], [2, 'W', 4], [2, 'W', 3]], 'toll_dir': 'W', 'base': 600, 'threshold': 4, 'discount_pct': 25, 'carpool_min': 2}, 0), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[13, 'E', 2], [1, 'E', 1], [13, 'E', 1], [1, 'W', 1], [1, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 725, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 1450), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'E', 1], [13, 'E', 1], [1, 'E', 4], [1, 'E', 4], [13, 'E', 4], [2, 'W', 3], [1, 'E', 1], [13, 'E', 1], [13, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 2}, 4350), ({'trips': [[1, 'W', 1], [1, 'E', 1], [2, 'W', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[2, 'E', 4], [13, 'W', 1], [1, 'W', 3]], 'toll_dir': 'E', 'base': 850, 'threshold': 2, 'discount_pct': 40, 'carpool_min': 2}, 0), ({'trips': [[1, 'E', 4], [2, 'W', 1], [13, 'E', 4], [1, 'W', 4], [1, 'W', 4], [2, 'E', 4], [1, 'E', 3], [1, 'W', 4], [2, 'E', 4]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 25, 'carpool_min': 3}, 725)], [({'trips': [[1, 'E', 1], [1, 'W', 1], [1, 'W', 2], [2, 'E', 4], [2, 'W', 1], [1, 'E', 1], [2, 'E', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 2175), ({'trips': [[1, 'W', 1], [13, 'W', 2], [2, 'E', 3], [2, 'W', 2], [1, 'W', 4], [13, 'E', 1], [1, 'W', 1], [1, 'E', 4], [2, 'W', 3], [13, 'W', 4], [1, 'W', 2], [2, 'E', 2], [2, 'W', 4], [13, 'W', 2]], 'toll_dir': 'W', 'base': 600, 'threshold': 1, 'discount_pct': 40, 'carpool_min': 3}, 2880), ({'trips': [[13, 'E', 1], [1, 'E', 1], [2, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 3, 'discount_pct': 25, 'carpool_min': 2}, 725), ({'trips': [[1, 'W', 1], [1, 'W', 1], [1, 'W', 3], [1, 'W', 1], [13, 'W', 1]], 'toll_dir': 'W', 'base': 725, 'threshold': 2, 'discount_pct': 33, 'carpool_min': 3}, 2660), ({'trips': [[2, 'E', 4], [1, 'E', 4], [1, 'W', 4], [2, 'E', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 1, 'discount_pct': 33, 'carpool_min': 2}, 600), ({'trips': [[1, 'E', 4], [2, 'W', 4], [1, 'E', 1], [1, 'W', 4], [1, 'W', 4], [2, 'E', 1], [1, 'E', 1], [13, 'W', 1], [13, 'W', 2], [2, 'E', 1], [1, 'E', 4], [1, 'W', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3]], 'toll_dir': 'W', 'base': 725, 'threshold': 5, 'discount_pct': 40, 'carpool_min': 3}, 3625), ({'trips': [[1, 'E', 2], [1, 'W', 1], [13, 'E', 1], [1, 'W', 1], [1, 'E', 1], [13, 'E', 1], [13, 'W', 3], [1, 'W', 3], [13, 'E', 1], [1, 'E', 1], [1, 'W', 1], [13, 'E', 2]], 'toll_dir': 'E', 'base': 600, 'threshold': 4, 'discount_pct': 40, 'carpool_min': 3}, 4200), ({'trips': [[1, 'W', 1], [1, 'E', 1], [13, 'W', 1], [2, 'W', 1], [1, 'E', 3], [2, 'W', 3], [1, 'W', 1], [13, 'W', 4], [13, 'E', 2], [2, 'W', 1], [1, 'W', 1], [1, 'W', 1]], 'toll_dir': 'E', 'base': 600, 'threshold': 2, 'discount_pct': 25, 'carpool_min': 3}, 1200)]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check('fee oracle' + ' %d' % i, 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 |
|---|---|---|---|
| fee oracle 0 | 725 | 725 | Passed |
| fee oracle 1 | 1487 | 1487 | Passed |
| fee oracle 2 | 1800 | 1800 | Passed |
| fee oracle 3 | 2660 | 2660 | Passed |
| fee oracle 4 | 1800 | 1800 | Passed |
| fee oracle 5 | 4250 | 4250 | Passed |
| fee oracle 6 | 1450 | 1450 | Passed |
| fee oracle 7 | 850 | 850 | Passed |
SHA-256 / 108b0b5ab9abec7255f03d951d99ad513006061565446dc077c2c7100b8c6a53
Verification & scope
A deterministic, bounded toy model with a stipulated contract; it makes no claim of conformance to any agency manual or standard. 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:48:04.231279+00:00.
Case digest / a689c152bf5bfee03cf326d8275d6ba247058ef1b10e24212dca02755df395be