FAILURE MAP
← Case archive

FA-59956 / Inventory cost layering / Open access

Landed cost allocation to receipt layers: zero weight fallback · case 01

A receipt of items with no recorded weight fails with no allocation basis even though values exist.

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

ROOT CAUSE

The zero-weight case returns an error instead of falling back to value basis.

VERIFIED REPAIR

Fall back to value basis when the weight basis sums to zero.

Unsuccessful approach: Falling back to an equal split per line ignores line value.

Case contract

Input {lines:[{sku,qty,unit_cost,weight(per unit)}], freight, duty_bp, basis:"weight"|"value"}. Freight is allocated in proportion to qty*weight (or line value); floor shares are topped up one cent at a time by largest remainder, ties to the earlier line. If the weight basis sums to zero, fall back to value; if that is zero too return {"error"}. Duty is round-half-up(line value*duty_bp/10000) on merchandise value only. Landed total = value+freight share+duty; unit = round-half-up(landed/qty).

Why this case matters

Inventory valuation and cost-of-goods decisions depend on this rule.

1 / The failure

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

N = 1
observations = []
def solve(x):
    lines = x['lines']
    freight = x['freight']
    vals = [l['qty'] * l['unit_cost'] for l in lines]
    if x['basis'] == 'weight':
        base = [l['qty'] * l['weight'] for l in lines]
    else:
        base = list(vals)
    tb = sum(base)
    if tb == 0:
        return {'error': 'no weights'}
    if tb == 0:
        return {'error': 'no allocation basis'}
    shares = [freight * b // tb for b in base]
    rems = [freight * b % tb for b in base]
    left = freight - sum(shares)
    order = sorted(range(len(lines)), key=lambda i: (-rems[i], i))
    for i in order[:left]:
        shares[i] += 1
    out = []
    for i, l in enumerate(lines):
        duty = (vals[i] * x['duty_bp'] + 5000) // 10000
        total = vals[i] + shares[i] + duty
        unit = (2 * total + l['qty']) // (2 * l['qty'])
        out.append({'sku': l['sku'], 'freight': shares[i], 'duty': duty, 'landed': total, 'unit': unit})
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 4}], 'freight': 1001, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 834, 'duty': 75, 'landed': 3909, 'unit': 391}, {'sku': 'B', 'freight': 167, 'duty': 125, 'landed': 5292, 'unit': 5292}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 116, 'unit': 116}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 104, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'B', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'C', 'freight': 34, 'duty': 1, 'landed': 135, 'unit': 135}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 11, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 6, 'duty': 0, 'landed': 16, 'unit': 16}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 301, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 241, 'duty': 40, 'landed': 1081, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 50, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 300, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 6, 'landed': 606, 'unit': 303}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1201, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 5}], 'freight': 1002, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 802, 'duty': 75, 'landed': 3877, 'unit': 388}, {'sku': 'B', 'freight': 200, 'duty': 125, 'landed': 5325, 'unit': 5325}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 101, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 117, 'unit': 117}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 107, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'B', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'C', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 12, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 302, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 100, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 350, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 7, 'landed': 707, 'unit': 354}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1202, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 6}], 'freight': 1003, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 772, 'duty': 75, 'landed': 3847, 'unit': 385}, {'sku': 'B', 'freight': 231, 'duty': 125, 'landed': 5356, 'unit': 5356}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 102, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 118, 'unit': 118}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 110, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'B', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'C', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 13, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 303, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 150, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 400, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 8, 'landed': 808, 'unit': 404}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1203, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 7}], 'freight': 1004, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 744, 'duty': 75, 'landed': 3819, 'unit': 382}, {'sku': 'B', 'freight': 260, 'duty': 125, 'landed': 5385, 'unit': 5385}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 103, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 120, 'unit': 120}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 113, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'B', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'C', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 14, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 8, 'duty': 0, 'landed': 18, 'unit': 18}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 304, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 243, 'duty': 40, 'landed': 1083, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 200, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 9, 'landed': 909, 'unit': 455}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1204, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 8}], 'freight': 1005, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 718, 'duty': 75, 'landed': 3793, 'unit': 379}, {'sku': 'B', 'freight': 287, 'duty': 125, 'landed': 5412, 'unit': 5412}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 104, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 121, 'unit': 121}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 116, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'B', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'C', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 15, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 9, 'duty': 0, 'landed': 19, 'unit': 19}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 305, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 244, 'duty': 40, 'landed': 1084, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 250, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 500, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 10, 'landed': 1010, 'unit': 505}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1205, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 603, 'landed': 7342, 'unit': 1836}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
weight basis[{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}][{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}]Passed
value basis[{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}][{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}]Passed
remainder spread[{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}][{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}]Passed
uneven remainders[{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}][{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}]Passed
zero weights{'error': 'no weights'}[{'duty': 40, 'freight': 241, 'landed': 1081, 'sku': 'A', 'unit': 541}, {'duty': 10, 'freight': 60, 'landed': 270, 'sku': 'B', 'unit': 270}]Failed
nothing to allocate{'error': 'no weights'}{'error': 'no allocation basis'}Failed
half cent duty[{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}][{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}]Passed
heavy duty[{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}][{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}]Passed

SHA-256 / d01a52bb37adfa611a1e5a10289a0f94facaa180a7a2a9f8fbdd5072c4d6cc17

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    lines = x['lines']
    freight = x['freight']
    vals = [l['qty'] * l['unit_cost'] for l in lines]
    if x['basis'] == 'weight':
        base = [l['qty'] * l['weight'] for l in lines]
    else:
        base = list(vals)
    tb = sum(base)
    if tb == 0:
        base = [1] * len(lines)
        tb = sum(base)
    if tb == 0:
        return {'error': 'no allocation basis'}
    shares = [freight * b // tb for b in base]
    rems = [freight * b % tb for b in base]
    left = freight - sum(shares)
    order = sorted(range(len(lines)), key=lambda i: (-rems[i], i))
    for i in order[:left]:
        shares[i] += 1
    out = []
    for i, l in enumerate(lines):
        duty = (vals[i] * x['duty_bp'] + 5000) // 10000
        total = vals[i] + shares[i] + duty
        unit = (2 * total + l['qty']) // (2 * l['qty'])
        out.append({'sku': l['sku'], 'freight': shares[i], 'duty': duty, 'landed': total, 'unit': unit})
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 4}], 'freight': 1001, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 834, 'duty': 75, 'landed': 3909, 'unit': 391}, {'sku': 'B', 'freight': 167, 'duty': 125, 'landed': 5292, 'unit': 5292}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 116, 'unit': 116}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 104, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'B', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'C', 'freight': 34, 'duty': 1, 'landed': 135, 'unit': 135}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 11, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 6, 'duty': 0, 'landed': 16, 'unit': 16}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 301, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 241, 'duty': 40, 'landed': 1081, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 50, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 300, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 6, 'landed': 606, 'unit': 303}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1201, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 5}], 'freight': 1002, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 802, 'duty': 75, 'landed': 3877, 'unit': 388}, {'sku': 'B', 'freight': 200, 'duty': 125, 'landed': 5325, 'unit': 5325}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 101, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 117, 'unit': 117}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 107, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'B', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'C', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 12, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 302, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 100, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 350, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 7, 'landed': 707, 'unit': 354}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1202, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 6}], 'freight': 1003, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 772, 'duty': 75, 'landed': 3847, 'unit': 385}, {'sku': 'B', 'freight': 231, 'duty': 125, 'landed': 5356, 'unit': 5356}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 102, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 118, 'unit': 118}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 110, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'B', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'C', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 13, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 303, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 150, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 400, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 8, 'landed': 808, 'unit': 404}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1203, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 7}], 'freight': 1004, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 744, 'duty': 75, 'landed': 3819, 'unit': 382}, {'sku': 'B', 'freight': 260, 'duty': 125, 'landed': 5385, 'unit': 5385}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 103, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 120, 'unit': 120}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 113, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'B', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'C', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 14, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 8, 'duty': 0, 'landed': 18, 'unit': 18}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 304, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 243, 'duty': 40, 'landed': 1083, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 200, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 9, 'landed': 909, 'unit': 455}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1204, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 8}], 'freight': 1005, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 718, 'duty': 75, 'landed': 3793, 'unit': 379}, {'sku': 'B', 'freight': 287, 'duty': 125, 'landed': 5412, 'unit': 5412}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 104, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 121, 'unit': 121}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 116, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'B', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'C', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 15, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 9, 'duty': 0, 'landed': 19, 'unit': 19}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 305, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 244, 'duty': 40, 'landed': 1084, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 250, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 500, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 10, 'landed': 1010, 'unit': 505}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1205, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 603, 'landed': 7342, 'unit': 1836}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
weight basis[{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}][{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}]Passed
value basis[{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}][{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}]Passed
remainder spread[{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}][{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}]Passed
uneven remainders[{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}][{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}]Passed
zero weights[{'duty': 40, 'freight': 151, 'landed': 991, 'sku': 'A', 'unit': 496}, {'duty': 10, 'freight': 150, 'landed': 360, 'sku': 'B', 'unit': 360}][{'duty': 40, 'freight': 241, 'landed': 1081, 'sku': 'A', 'unit': 541}, {'duty': 10, 'freight': 60, 'landed': 270, 'sku': 'B', 'unit': 270}]Failed
nothing to allocate[{'duty': 0, 'freight': 50, 'landed': 50, 'sku': 'A', 'unit': 50}]{'error': 'no allocation basis'}Failed
half cent duty[{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}][{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}]Passed
heavy duty[{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}][{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}]Passed

SHA-256 / f96893b29b455262cec3d0c9ab2b62ce5f10c68e55fcaf827407c60f14480a48

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    lines = x['lines']
    freight = x['freight']
    vals = [l['qty'] * l['unit_cost'] for l in lines]
    if x['basis'] == 'weight':
        base = [l['qty'] * l['weight'] for l in lines]
    else:
        base = list(vals)
    tb = sum(base)
    if tb == 0:
        base = list(vals)
        tb = sum(base)
    if tb == 0:
        return {'error': 'no allocation basis'}
    shares = [freight * b // tb for b in base]
    rems = [freight * b % tb for b in base]
    left = freight - sum(shares)
    order = sorted(range(len(lines)), key=lambda i: (-rems[i], i))
    for i in order[:left]:
        shares[i] += 1
    out = []
    for i, l in enumerate(lines):
        duty = (vals[i] * x['duty_bp'] + 5000) // 10000
        total = vals[i] + shares[i] + duty
        unit = (2 * total + l['qty']) // (2 * l['qty'])
        out.append({'sku': l['sku'], 'freight': shares[i], 'duty': duty, 'landed': total, 'unit': unit})
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 4}], 'freight': 1001, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 834, 'duty': 75, 'landed': 3909, 'unit': 391}, {'sku': 'B', 'freight': 167, 'duty': 125, 'landed': 5292, 'unit': 5292}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 116, 'unit': 116}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 104, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'B', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}, {'sku': 'C', 'freight': 34, 'duty': 1, 'landed': 135, 'unit': 135}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 11, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 6, 'duty': 0, 'landed': 16, 'unit': 16}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 301, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 241, 'duty': 40, 'landed': 1081, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 50, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 300, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 6, 'landed': 606, 'unit': 303}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1201, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 5}], 'freight': 1002, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 802, 'duty': 75, 'landed': 3877, 'unit': 388}, {'sku': 'B', 'freight': 200, 'duty': 125, 'landed': 5325, 'unit': 5325}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 101, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 117, 'unit': 117}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 107, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'B', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}, {'sku': 'C', 'freight': 35, 'duty': 1, 'landed': 136, 'unit': 136}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 12, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 3, 'duty': 0, 'landed': 13, 'unit': 13}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 302, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 60, 'duty': 10, 'landed': 270, 'unit': 270}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 100, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 350, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 7, 'landed': 707, 'unit': 354}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1202, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 601, 'landed': 7340, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 360, 'landed': 3618, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 6}], 'freight': 1003, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 772, 'duty': 75, 'landed': 3847, 'unit': 385}, {'sku': 'B', 'freight': 231, 'duty': 125, 'landed': 5356, 'unit': 5356}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 102, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 339, 'duty': 0, 'landed': 2439, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 16, 'duty': 0, 'landed': 118, 'unit': 118}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 110, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'B', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}, {'sku': 'C', 'freight': 36, 'duty': 1, 'landed': 137, 'unit': 137}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 13, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 7, 'duty': 0, 'landed': 17, 'unit': 17}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 303, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 242, 'duty': 40, 'landed': 1082, 'unit': 541}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 150, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 400, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 8, 'landed': 808, 'unit': 404}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1203, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 7}], 'freight': 1004, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 744, 'duty': 75, 'landed': 3819, 'unit': 382}, {'sku': 'B', 'freight': 260, 'duty': 125, 'landed': 5385, 'unit': 5385}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 103, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 120, 'unit': 120}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 113, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'B', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}, {'sku': 'C', 'freight': 37, 'duty': 1, 'landed': 138, 'unit': 138}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 14, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 8, 'duty': 0, 'landed': 18, 'unit': 18}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 304, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 243, 'duty': 40, 'landed': 1083, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 200, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 9, 'landed': 909, 'unit': 455}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1204, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 602, 'landed': 7341, 'unit': 1835}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]], [['weight basis', {'lines': [{'sku': 'A', 'qty': 10, 'unit_cost': 300, 'weight': 2}, {'sku': 'B', 'qty': 1, 'unit_cost': 5000, 'weight': 8}], 'freight': 1005, 'duty_bp': 250, 'basis': 'weight'}, [{'sku': 'A', 'freight': 718, 'duty': 75, 'landed': 3793, 'unit': 379}, {'sku': 'B', 'freight': 287, 'duty': 125, 'landed': 5412, 'unit': 5412}]], ['value basis', {'lines': [{'sku': 'A', 'qty': 3, 'unit_cost': 700, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 450, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 104, 'weight': 9}], 'freight': 500, 'duty_bp': 0, 'basis': 'value'}, [{'sku': 'A', 'freight': 338, 'duty': 0, 'landed': 2438, 'unit': 813}, {'sku': 'B', 'freight': 145, 'duty': 0, 'landed': 1045, 'unit': 523}, {'sku': 'C', 'freight': 17, 'duty': 0, 'landed': 121, 'unit': 121}]], ['remainder spread', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 100, 'weight': 1}, {'sku': 'C', 'qty': 1, 'unit_cost': 100, 'weight': 1}], 'freight': 116, 'duty_bp': 100, 'basis': 'weight'}, [{'sku': 'A', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'B', 'freight': 39, 'duty': 1, 'landed': 140, 'unit': 140}, {'sku': 'C', 'freight': 38, 'duty': 1, 'landed': 139, 'unit': 139}]], ['uneven remainders', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 10, 'weight': 1}, {'sku': 'B', 'qty': 1, 'unit_cost': 10, 'weight': 2}, {'sku': 'C', 'qty': 1, 'unit_cost': 10, 'weight': 4}], 'freight': 15, 'duty_bp': 0, 'basis': 'weight'}, [{'sku': 'A', 'freight': 2, 'duty': 0, 'landed': 12, 'unit': 12}, {'sku': 'B', 'freight': 4, 'duty': 0, 'landed': 14, 'unit': 14}, {'sku': 'C', 'freight': 9, 'duty': 0, 'landed': 19, 'unit': 19}]], ['zero weights', {'lines': [{'sku': 'A', 'qty': 2, 'unit_cost': 400, 'weight': 0}, {'sku': 'B', 'qty': 1, 'unit_cost': 200, 'weight': 0}], 'freight': 305, 'duty_bp': 500, 'basis': 'weight'}, [{'sku': 'A', 'freight': 244, 'duty': 40, 'landed': 1084, 'unit': 542}, {'sku': 'B', 'freight': 61, 'duty': 10, 'landed': 271, 'unit': 271}]], ['nothing to allocate', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 0, 'weight': 0}], 'freight': 250, 'duty_bp': 0, 'basis': 'weight'}, {'error': 'no allocation basis'}], ['half cent duty', {'lines': [{'sku': 'A', 'qty': 1, 'unit_cost': 150, 'weight': 1}, {'sku': 'B', 'qty': 2, 'unit_cost': 500, 'weight': 1}], 'freight': 0, 'duty_bp': 100, 'basis': 'value'}, [{'sku': 'A', 'freight': 0, 'duty': 2, 'landed': 152, 'unit': 152}, {'sku': 'B', 'freight': 0, 'duty': 10, 'landed': 1010, 'unit': 505}]], ['heavy duty', {'lines': [{'sku': 'A', 'qty': 4, 'unit_cost': 1250, 'weight': 5}, {'sku': 'B', 'qty': 3, 'unit_cost': 999, 'weight': 1}], 'freight': 2000, 'duty_bp': 1205, 'basis': 'weight'}, [{'sku': 'A', 'freight': 1739, 'duty': 603, 'landed': 7342, 'unit': 1836}, {'sku': 'B', 'freight': 261, 'duty': 361, 'landed': 3619, 'unit': 1206}]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
weight basis[{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}][{'duty': 75, 'freight': 834, 'landed': 3909, 'sku': 'A', 'unit': 391}, {'duty': 125, 'freight': 167, 'landed': 5292, 'sku': 'B', 'unit': 5292}]Passed
value basis[{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}][{'duty': 0, 'freight': 339, 'landed': 2439, 'sku': 'A', 'unit': 813}, {'duty': 0, 'freight': 145, 'landed': 1045, 'sku': 'B', 'unit': 523}, {'duty': 0, 'freight': 16, 'landed': 116, 'sku': 'C', 'unit': 116}]Passed
remainder spread[{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}][{'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'A', 'unit': 136}, {'duty': 1, 'freight': 35, 'landed': 136, 'sku': 'B', 'unit': 136}, {'duty': 1, 'freight': 34, 'landed': 135, 'sku': 'C', 'unit': 135}]Passed
uneven remainders[{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}][{'duty': 0, 'freight': 2, 'landed': 12, 'sku': 'A', 'unit': 12}, {'duty': 0, 'freight': 3, 'landed': 13, 'sku': 'B', 'unit': 13}, {'duty': 0, 'freight': 6, 'landed': 16, 'sku': 'C', 'unit': 16}]Passed
zero weights[{'duty': 40, 'freight': 241, 'landed': 1081, 'sku': 'A', 'unit': 541}, {'duty': 10, 'freight': 60, 'landed': 270, 'sku': 'B', 'unit': 270}][{'duty': 40, 'freight': 241, 'landed': 1081, 'sku': 'A', 'unit': 541}, {'duty': 10, 'freight': 60, 'landed': 270, 'sku': 'B', 'unit': 270}]Passed
nothing to allocate{'error': 'no allocation basis'}{'error': 'no allocation basis'}Passed
half cent duty[{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}][{'duty': 2, 'freight': 0, 'landed': 152, 'sku': 'A', 'unit': 152}, {'duty': 6, 'freight': 0, 'landed': 606, 'sku': 'B', 'unit': 303}]Passed
heavy duty[{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}][{'duty': 601, 'freight': 1739, 'landed': 7340, 'sku': 'A', 'unit': 1835}, {'duty': 360, 'freight': 261, 'landed': 3618, 'sku': 'B', 'unit': 1206}]Passed

SHA-256 / f3aa231924f2db838a03a9ad659799839c656cf82913c571f03dfe78e707352e

Verification & scope

Stipulated bounded teaching model with explicit toy rules; not an accounting-standard implementation. 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:46:41.098409+00:00.

Case digest / 61397ad60955f3b039d4d81b075e8ee37eb936f7a1805d7e61cedcab1ac5405c