FA-95416 / Shipping rate zone lookup / Open access
Rate table: fractional pounds not rounded up · case 01
Weights just above a bracket edge are rated in the lower bracket.
ROOT CAUSE
Billable weight is used without rounding up to a whole pound.
VERIFIED REPAIR
Round weight up to a whole pound before bracket lookup.
Unsuccessful approach: Rounding to nearest still rates 2.01 lb as 2 lb.
Case contract
rows [[max_lb, [cents for zones 2..8]]] ascending; weight is rounded up to whole lb (minimum 1) and uses the first row with max_lb >= weight. Zone 1 is billed as zone 2; zones outside 1-8 -> "NO_RATE"; a None cell -> "NO_RATE". Above the last row: last row rate + (lb over last max) * over[zone].
Why this case matters
Zone rate tables convert billable weight and zone into a base charge.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
if zone < 1 or zone > 8:
return 'NO_RATE'
w = max(1, weight)
col = max(zone, 2) - 2
for max_lb, rates in rows:
if w <= max_lb:
r = rates[col]
return r if r is not None else 'NO_RATE'
last_lb, last_rates = rows[-1]
return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 6', [10, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 14', [1, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100]], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 64', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 21', [1.5, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1250], ['generated mix 29', [5.5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2800]], [['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 50', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 31', [5, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 39', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 47', [10.2, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 44', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500], ['generated mix 52', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]]]
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 |
|---|---|---|---|
| fraction over table | 1520.0 | 1600 | Failed |
| generated mix 15 | 1672.0 | 1760 | Failed |
| bracket edge | 960 | 960 | Passed |
| zone 1 as 2 | 800 | 800 | Passed |
| unavailable cell | NO_RATE | NO_RATE | Passed |
| fraction up | 900 | 900 | Passed |
| generated mix 6 | 2000 | 2000 | Passed |
| generated mix 14 | 1100 | 1100 | Passed |
SHA-256 / 80ee7d5d881b809740afb2f4697acea8fe6d593411af70ea86fbf31940db43e0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
if zone < 1 or zone > 8:
return 'NO_RATE'
w = max(1, round(weight))
col = max(zone, 2) - 2
for max_lb, rates in rows:
if w <= max_lb:
r = rates[col]
return r if r is not None else 'NO_RATE'
last_lb, last_rates = rows[-1]
return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 6', [10, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 14', [1, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100]], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 64', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 21', [1.5, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1250], ['generated mix 29', [5.5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2800]], [['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 50', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 31', [5, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 39', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 47', [10.2, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 44', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500], ['generated mix 52', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]]]
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 |
|---|---|---|---|
| fraction over table | 1500 | 1600 | Failed |
| generated mix 15 | 1650 | 1760 | Failed |
| bracket edge | 960 | 960 | Passed |
| zone 1 as 2 | 800 | 800 | Passed |
| unavailable cell | NO_RATE | NO_RATE | Passed |
| fraction up | 900 | 900 | Passed |
| generated mix 6 | 2000 | 2000 | Passed |
| generated mix 14 | 1100 | 1100 | Passed |
SHA-256 / 81b160778177e23d07a92d2ec51fabb0f23f1120d9f4e2ed00714c053ac59945
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
if zone < 1 or zone > 8:
return 'NO_RATE'
w = max(1, math.ceil(weight))
col = max(zone, 2) - 2
for max_lb, rates in rows:
if w <= max_lb:
r = rates[col]
return r if r is not None else 'NO_RATE'
last_lb, last_rates = rows[-1]
return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 6', [10, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 14', [1, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100]], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 18', [10.2, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2630], ['generated mix 64', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 21', [1.5, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1250], ['generated mix 29', [5.5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2800]], [['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 50', [2.01, 7, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1650], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 31', [5, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 39', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 47', [10.2, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 44', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500], ['generated mix 52', [9, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]]]
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 |
|---|---|---|---|
| fraction over table | 1600 | 1600 | Passed |
| generated mix 15 | 1760 | 1760 | Passed |
| bracket edge | 960 | 960 | Passed |
| zone 1 as 2 | 800 | 800 | Passed |
| unavailable cell | NO_RATE | NO_RATE | Passed |
| fraction up | 900 | 900 | Passed |
| generated mix 6 | 2000 | 2000 | Passed |
| generated mix 14 | 1100 | 1100 | Passed |
SHA-256 / 3d1700236b3cac21ed2df88e85869a166a4083ea9e40b0f8e22ccb1401f34065
Verification & scope
Stipulated table layout and increments. 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:52:13.474365+00:00.
Case digest / 4d9aa08d8e4b8496125570c9e4dbbfc38874ba076e281bb38db205f71197d369