broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val = 50
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= stats['fum_lost'] * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    t = (abs(pts) + 5) // 10
    sign = '-' if pts < 0 and t else ''
    return {'hundredths': pts, 'display': '%s%d.%d' % (sign, t // 10, t % 10)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: tight end premium stacking',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 1,
     'pass_yds': 128,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 1,
     'rush_yds': 76,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '53.5', 'hundredths': 5350}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 2,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 85,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 131,
     'rush_td': 0,
     'rush_yds': 92,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '39.5', 'hundredths': 3950}),
  ('second regression',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 68,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 2,
     'rush_yds': 71,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '50.0', 'hundredths': 5000}),
  ('normal control 1',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 167,
     'rec': 0,
     'rec_td': 2,
     'rec_yds': 119,
     'rush_td': 2,
     'rush_yds': 38,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '49.5', 'hundredths': 4950}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 165,
     'rec': 10,
     'rec_td': 1,
     'rec_yds': 3,
     'rush_td': 2,
     'rush_yds': 63,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '25.5', 'hundredths': 2550}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 220,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 31,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '44.3', 'hundredths': 4425}),
  ('normal control 4',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -8,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-0.8', 'hundredths': -75})],
 [('regression: tight end premium stacking',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 2,
     'pass_yds': 25,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 85,
     'rush_td': 0,
     'rush_yds': 42,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '21.8', 'hundredths': 2175}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 325,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 2,
     'rush_yds': -3,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '45.8', 'hundredths': 4575}),
  ('second regression',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': -3,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': -3,
     'rush_td': 2,
     'rush_yds': 46,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '17.3', 'hundredths': 1725}),
  ('normal control 1',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 172,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 53,
     'rush_td': 1,
     'rush_yds': 62,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '33.3', 'hundredths': 3325}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 8,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-5.0', 'hundredths': -500}),
  ('normal control 3',
   [{'first_downs': 3,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 187,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 137,
     'rush_td': 2,
     'rush_yds': 112,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '61.8', 'hundredths': 6175}),
  ('normal control 4',
   [{'first_downs': 9,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 223,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 54,
     'rush_td': 2,
     'rush_yds': 53,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '58.3', 'hundredths': 5825})],
 [('regression: tight end premium stacking',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': 42,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '45.0', 'hundredths': 4500}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 297,
     'rec': 10,
     'rec_td': 1,
     'rec_yds': -1,
     'rush_td': 0,
     'rush_yds': 10,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '39.0', 'hundredths': 3900}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 299,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '15.3', 'hundredths': 1525}),
  ('normal control 1',
   [{'first_downs': 0,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '22.5', 'hundredths': 2250}),
  ('normal control 2',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 300,
     'rec': 8,
     'rec_td': 1,
     'rec_yds': 6,
     'rush_td': 2,
     'rush_yds': 132,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 178,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 31,
     'rush_td': 2,
     'rush_yds': 118,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '64.0', 'hundredths': 6400}),
  ('normal control 4',
   [{'first_downs': 7,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 196,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '53.3', 'hundredths': 5325})],
 [('regression: tight end premium stacking',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 300,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 101,
     'rush_td': 1,
     'rush_yds': -10,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '38.5', 'hundredths': 3850}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 7,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 65,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 28,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '40.8', 'hundredths': 4075}),
  ('second regression',
   [{'first_downs': 9,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 2,
     'pass_yds': 232,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 99,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '42.8', 'hundredths': 4275}),
  ('normal control 1',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 325,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 51,
     'rush_td': 1,
     'rush_yds': 7,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '41.3', 'hundredths': 4125}),
  ('normal control 2',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 300,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 42,
     'rush_td': 1,
     'rush_yds': 9,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '20.3', 'hundredths': 2025}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 83,
     'rush_td': 0,
     'rush_yds': -1,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '35.5', 'hundredths': 3550}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 184,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 55,
     'rush_td': 2,
     'rush_yds': 3,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '47.5', 'hundredths': 4750})],
 [('regression: tight end premium stacking',
   [{'first_downs': 7,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 1,
     'pass_yds': -4,
     'rec': 7,
     'rec_td': 1,
     'rec_yds': 8,
     'rush_td': 1,
     'rush_yds': 10,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '21.3', 'hundredths': 2125}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 325,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 59,
     'rush_td': 2,
     'rush_yds': 150,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '79.3', 'hundredths': 7925}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 114,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 87,
     'rush_td': 2,
     'rush_yds': 77,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '56.8', 'hundredths': 5675}),
  ('normal control 1',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 321,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '42.8', 'hundredths': 4275}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 21,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-5.5', 'hundredths': -550}),
  ('normal control 3',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': -1,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 0,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '-5.3', 'hundredths': -525}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 110,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 36,
     'rush_td': 1,
     'rush_yds': 9,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '30.0', 'hundredths': 3000})]]
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val += 100
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= stats['fum_lost'] * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    t = (abs(pts) + 5) // 10
    sign = '-' if pts < 0 and t else ''
    return {'hundredths': pts, 'display': '%s%d.%d' % (sign, t // 10, t % 10)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: tight end premium stacking',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 1,
     'pass_yds': 128,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 1,
     'rush_yds': 76,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '53.5', 'hundredths': 5350}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 2,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 85,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 131,
     'rush_td': 0,
     'rush_yds': 92,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '39.5', 'hundredths': 3950}),
  ('second regression',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 68,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 2,
     'rush_yds': 71,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '50.0', 'hundredths': 5000}),
  ('normal control 1',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 167,
     'rec': 0,
     'rec_td': 2,
     'rec_yds': 119,
     'rush_td': 2,
     'rush_yds': 38,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '49.5', 'hundredths': 4950}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 165,
     'rec': 10,
     'rec_td': 1,
     'rec_yds': 3,
     'rush_td': 2,
     'rush_yds': 63,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '25.5', 'hundredths': 2550}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 220,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 31,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '44.3', 'hundredths': 4425}),
  ('normal control 4',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -8,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-0.8', 'hundredths': -75})],
 [('regression: tight end premium stacking',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 2,
     'pass_yds': 25,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 85,
     'rush_td': 0,
     'rush_yds': 42,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '21.8', 'hundredths': 2175}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 325,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': 99,
     'rush_td': 2,
     'rush_yds': -3,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '45.8', 'hundredths': 4575}),
  ('second regression',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': -3,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': -3,
     'rush_td': 2,
     'rush_yds': 46,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '17.3', 'hundredths': 1725}),
  ('normal control 1',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 172,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 53,
     'rush_td': 1,
     'rush_yds': 62,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '33.3', 'hundredths': 3325}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 8,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-5.0', 'hundredths': -500}),
  ('normal control 3',
   [{'first_downs': 3,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 187,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 137,
     'rush_td': 2,
     'rush_yds': 112,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '61.8', 'hundredths': 6175}),
  ('normal control 4',
   [{'first_downs': 9,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 223,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 54,
     'rush_td': 2,
     'rush_yds': 53,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '58.3', 'hundredths': 5825})],
 [('regression: tight end premium stacking',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': 42,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '45.0', 'hundredths': 4500}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 297,
     'rec': 10,
     'rec_td': 1,
     'rec_yds': -1,
     'rush_td': 0,
     'rush_yds': 10,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '39.0', 'hundredths': 3900}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 299,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '15.3', 'hundredths': 1525}),
  ('normal control 1',
   [{'first_downs': 0,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '22.5', 'hundredths': 2250}),
  ('normal control 2',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 300,
     'rec': 8,
     'rec_td': 1,
     'rec_yds': 6,
     'rush_td': 2,
     'rush_yds': 132,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 178,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 31,
     'rush_td': 2,
     'rush_yds': 118,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '64.0', 'hundredths': 6400}),
  ('normal control 4',
   [{'first_downs': 7,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 196,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '53.3', 'hundredths': 5325})],
 [('regression: tight end premium stacking',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 300,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 101,
     'rush_td': 1,
     'rush_yds': -10,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '38.5', 'hundredths': 3850}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 7,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 65,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 28,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '40.8', 'hundredths': 4075}),
  ('second regression',
   [{'first_downs': 9,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 2,
     'pass_yds': 232,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 99,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '42.8', 'hundredths': 4275}),
  ('normal control 1',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 325,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 51,
     'rush_td': 1,
     'rush_yds': 7,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '41.3', 'hundredths': 4125}),
  ('normal control 2',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 300,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 42,
     'rush_td': 1,
     'rush_yds': 9,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '20.3', 'hundredths': 2025}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 3,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 83,
     'rush_td': 0,
     'rush_yds': -1,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '35.5', 'hundredths': 3550}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 184,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 55,
     'rush_td': 2,
     'rush_yds': 3,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '47.5', 'hundredths': 4750})],
 [('regression: tight end premium stacking',
   [{'first_downs': 7,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 1,
     'pass_yds': -4,
     'rec': 7,
     'rec_td': 1,
     'rec_yds': 8,
     'rush_td': 1,
     'rush_yds': 10,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '21.3', 'hundredths': 2125}),
  ('partial repair probe: tight end premium stacking',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 325,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 59,
     'rush_td': 2,
     'rush_yds': 150,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '79.3', 'hundredths': 7925}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 114,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 87,
     'rush_td': 2,
     'rush_yds': 77,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '56.8', 'hundredths': 5675}),
  ('normal control 1',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 321,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '42.8', 'hundredths': 4275}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 21,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-5.5', 'hundredths': -550}),
  ('normal control 3',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': -1,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 0,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '-5.3', 'hundredths': -525}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 110,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 36,
     'rush_td': 1,
     'rush_yds': 9,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '30.0', 'hundredths': 3000})]]
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)

prompt:
Tight ends in PPR leagues earn only 0.5 per catch, less than wide receivers.

Score a skill-player stat line in integer hundredths. Passing yards earn 1 point per full 25 yards, rushing and receiving yards 1 point per full 10 yards, each category truncated toward zero separately. Pass TD 4, interception -2, rush/receiving TD 6, fumble lost -2 (fumbles recovered by the own team are free), two-point conversion 2, each first down 0.25. Receptions are worth 0/0.5/1 for std/half/ppr, and a TE earns an extra 0.5 per reception on top. 300+ passing, 100+ rushing and 100+ receiving yards each add a 3 point bonus. The display string rounds to tenths half away from zero and never shows -0.0.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val += 50
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= stats['fum'] * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    t = (abs(pts) + 5) // 10
    sign = '-' if pts < 0 and t else ''
    return {'hundredths': pts, 'display': '%s%d.%d' % (sign, t // 10, t % 10)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: fumbles lost versus fumbles',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -2,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '-0.8', 'hundredths': -75}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 49,
     'rush_td': 0,
     'rush_yds': 50,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '29.5', 'hundredths': 2950}),
  ('second regression',
   [{'first_downs': 3,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 355,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 53,
     'rush_td': 2,
     'rush_yds': 100,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '61.8', 'hundredths': 6175}),
  ('normal control 1',
   [{'first_downs': 3,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 280,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': 9,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '31.8', 'hundredths': 3175}),
  ('normal control 2',
   [{'first_downs': 9,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 26,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 78,
     'rush_td': 1,
     'rush_yds': 64,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '34.3', 'hundredths': 3425}),
  ('normal control 3',
   [{'first_downs': 7,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 321,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 89,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '70.8', 'hundredths': 7075}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 142,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 7,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '34.5', 'hundredths': 3450})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 299,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 121,
     'rush_td': 1,
     'rush_yds': 139,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '61.3', 'hundredths': 6125}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 8,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 31,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 81,
     'rush_td': 1,
     'rush_yds': 48,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '21.0', 'hundredths': 2100}),
  ('second regression',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 325,
     'rec': 8,
     'rec_td': 0,
     'rec_yds': 132,
     'rush_td': 2,
     'rush_yds': 8,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '58.0', 'hundredths': 5800}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': -3,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 102,
     'rush_td': 1,
     'rush_yds': 99,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '49.5', 'hundredths': 4950}),
  ('normal control 2',
   [{'first_downs': 2,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 299,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 27,
     'rush_td': 1,
     'rush_yds': 17,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '42.0', 'hundredths': 4200}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 36,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 68,
     'rush_td': 2,
     'rush_yds': 52,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '25.0', 'hundredths': 2500}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 163,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 119,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '69.0', 'hundredths': 6900})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 142,
     'rec': 1,
     'rec_td': 2,
     'rec_yds': 148,
     'rush_td': 2,
     'rush_yds': 56,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '62.0', 'hundredths': 6200}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-6.5', 'hundredths': -650}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 267,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 2,
     'rush_yds': 71,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '66.3', 'hundredths': 6625}),
  ('normal control 1',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 136,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 93,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '45.0', 'hundredths': 4500}),
  ('normal control 2',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 344,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 89,
     'rush_td': 1,
     'rush_yds': 77,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': -3,
     'rec': 4,
     'rec_td': 1,
     'rec_yds': 120,
     'rush_td': 0,
     'rush_yds': 120,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '43.5', 'hundredths': 4350}),
  ('normal control 4',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 103,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 48,
     'rush_td': 2,
     'rush_yds': 120,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '31.3', 'hundredths': 3125})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 40,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 8,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '0.3', 'hundredths': 25}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 9,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 22,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '-3.8', 'hundredths': -375}),
  ('second regression',
   [{'first_downs': 0,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 7,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-8.0', 'hundredths': -800}),
  ('normal control 1',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 8,
     'rec_td': 0,
     'rec_yds': 123,
     'rush_td': 2,
     'rush_yds': 95,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '60.3', 'hundredths': 6025}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 325,
     'rec': 7,
     'rec_td': 1,
     'rec_yds': 38,
     'rush_td': 2,
     'rush_yds': 10,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 243,
     'rec': 4,
     'rec_td': 2,
     'rec_yds': 99,
     'rush_td': 0,
     'rush_yds': -14,
     'two_pt': 0},
    'std', 'WR'],
   {'display': '25.0', 'hundredths': 2500}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 300,
     'rec': 9,
     'rec_td': 2,
     'rec_yds': 7,
     'rush_td': 0,
     'rush_yds': 75,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '61.5', 'hundredths': 6150})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 7,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 2,
     'pass_yds': 224,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 20,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '37.8', 'hundredths': 3775}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 14,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 8,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '-3.3', 'hundredths': -325}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 40,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '-8.8', 'hundredths': -875}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 313,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '54.0', 'hundredths': 5400}),
  ('normal control 2',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 319,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 84,
     'rush_td': 0,
     'rush_yds': 2,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '43.3', 'hundredths': 4325}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 2,
     'pass_yds': -3,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 145,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '44.3', 'hundredths': 4425}),
  ('normal control 4',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 25,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 10,
     'rush_td': 2,
     'rush_yds': 101,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '42.0', 'hundredths': 4200})]]
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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val += 50
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= max(stats['fum'] - 1, 0) * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    t = (abs(pts) + 5) // 10
    sign = '-' if pts < 0 and t else ''
    return {'hundredths': pts, 'display': '%s%d.%d' % (sign, t // 10, t % 10)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: fumbles lost versus fumbles',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -2,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '-0.8', 'hundredths': -75}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 49,
     'rush_td': 0,
     'rush_yds': 50,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '29.5', 'hundredths': 2950}),
  ('second regression',
   [{'first_downs': 3,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 355,
     'rec': 3,
     'rec_td': 2,
     'rec_yds': 53,
     'rush_td': 2,
     'rush_yds': 100,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '61.8', 'hundredths': 6175}),
  ('normal control 1',
   [{'first_downs': 3,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 280,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': 9,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '31.8', 'hundredths': 3175}),
  ('normal control 2',
   [{'first_downs': 9,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 4,
     'pass_yds': 26,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 78,
     'rush_td': 1,
     'rush_yds': 64,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '34.3', 'hundredths': 3425}),
  ('normal control 3',
   [{'first_downs': 7,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 321,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 89,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '70.8', 'hundredths': 7075}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 142,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': 7,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '34.5', 'hundredths': 3450})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 299,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 121,
     'rush_td': 1,
     'rush_yds': 139,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '61.3', 'hundredths': 6125}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 8,
     'fum': 1,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 31,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 81,
     'rush_td': 1,
     'rush_yds': 48,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '21.0', 'hundredths': 2100}),
  ('second regression',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 325,
     'rec': 8,
     'rec_td': 0,
     'rec_yds': 132,
     'rush_td': 2,
     'rush_yds': 8,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '58.0', 'hundredths': 5800}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': -3,
     'rec': 2,
     'rec_td': 2,
     'rec_yds': 102,
     'rush_td': 1,
     'rush_yds': 99,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '49.5', 'hundredths': 4950}),
  ('normal control 2',
   [{'first_downs': 2,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 299,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 27,
     'rush_td': 1,
     'rush_yds': 17,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '42.0', 'hundredths': 4200}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 36,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 68,
     'rush_td': 2,
     'rush_yds': 52,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '25.0', 'hundredths': 2500}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 163,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 119,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '69.0', 'hundredths': 6900})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 142,
     'rec': 1,
     'rec_td': 2,
     'rec_yds': 148,
     'rush_td': 2,
     'rush_yds': 56,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '62.0', 'hundredths': 6200}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-6.5', 'hundredths': -650}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 1,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 267,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 2,
     'rush_yds': 71,
     'two_pt': 1},
    'half', 'TE'],
   {'display': '66.3', 'hundredths': 6625}),
  ('normal control 1',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 136,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 93,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '45.0', 'hundredths': 4500}),
  ('normal control 2',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 344,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 89,
     'rush_td': 1,
     'rush_yds': 77,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': -3,
     'rec': 4,
     'rec_td': 1,
     'rec_yds': 120,
     'rush_td': 0,
     'rush_yds': 120,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '43.5', 'hundredths': 4350}),
  ('normal control 4',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 103,
     'rec': 1,
     'rec_td': 0,
     'rec_yds': 48,
     'rush_td': 2,
     'rush_yds': 120,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '31.3', 'hundredths': 3125})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 40,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 8,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '0.3', 'hundredths': 25}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 9,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 22,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '-3.8', 'hundredths': -375}),
  ('second regression',
   [{'first_downs': 0,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 12,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 7,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-8.0', 'hundredths': -800}),
  ('normal control 1',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 8,
     'rec_td': 0,
     'rec_yds': 123,
     'rush_td': 2,
     'rush_yds': 95,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '60.3', 'hundredths': 6025}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 325,
     'rec': 7,
     'rec_td': 1,
     'rec_yds': 38,
     'rush_td': 2,
     'rush_yds': 10,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '49.0', 'hundredths': 4900}),
  ('normal control 3',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 243,
     'rec': 4,
     'rec_td': 2,
     'rec_yds': 99,
     'rush_td': 0,
     'rush_yds': -14,
     'two_pt': 0},
    'std', 'WR'],
   {'display': '25.0', 'hundredths': 2500}),
  ('normal control 4',
   [{'first_downs': 0,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': 300,
     'rec': 9,
     'rec_td': 2,
     'rec_yds': 7,
     'rush_td': 0,
     'rush_yds': 75,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '61.5', 'hundredths': 6150})],
 [('regression: fumbles lost versus fumbles',
   [{'first_downs': 7,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 2,
     'pass_yds': 224,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 20,
     'rush_td': 1,
     'rush_yds': -7,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '37.8', 'hundredths': 3775}),
  ('partial repair probe: fumbles lost versus fumbles',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 14,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 8,
     'two_pt': 0},
    'ppr', 'QB'],
   {'display': '-3.3', 'hundredths': -325}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 40,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '-8.8', 'hundredths': -875}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 2,
     'pass_yds': 313,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 19,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '54.0', 'hundredths': 5400}),
  ('normal control 2',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 319,
     'rec': 11,
     'rec_td': 0,
     'rec_yds': 84,
     'rush_td': 0,
     'rush_yds': 2,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '43.3', 'hundredths': 4325}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 2,
     'pass_yds': -3,
     'rec': 6,
     'rec_td': 2,
     'rec_yds': 145,
     'rush_td': 0,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '44.3', 'hundredths': 4425}),
  ('normal control 4',
   [{'first_downs': 8,
     'fum': 0,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 25,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 10,
     'rush_td': 2,
     'rush_yds': 101,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '42.0', 'hundredths': 4200})]]
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)

prompt:
A player who fumbled twice but recovered both loses 4 points.

Score a skill-player stat line in integer hundredths. Passing yards earn 1 point per full 25 yards, rushing and receiving yards 1 point per full 10 yards, each category truncated toward zero separately. Pass TD 4, interception -2, rush/receiving TD 6, fumble lost -2 (fumbles recovered by the own team are free), two-point conversion 2, each first down 0.25. Receptions are worth 0/0.5/1 for std/half/ppr, and a TE earns an extra 0.5 per reception on top. 300+ passing, 100+ rushing and 100+ receiving yards each add a 3 point bonus. The display string rounds to tenths half away from zero and never shows -0.0.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val += 50
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= stats['fum_lost'] * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    return {'hundredths': pts, 'display': '%.1f' % (pts / 100)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: display rounding',
   [{'first_downs': 1,
     'fum': 2,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 240,
     'rec': 3,
     'rec_td': 0,
     'rec_yds': 40,
     'rush_td': 0,
     'rush_yds': 119,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '25.3', 'hundredths': 2525}),
  ('partial repair probe: display rounding',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 14,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -15,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-3.5', 'hundredths': -350}),
  ('second regression',
   [{'first_downs': 1,
     'fum': 1,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 226,
     'rec': 2,
     'rec_td': 1,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 47,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '37.3', 'hundredths': 3725}),
  ('normal control 1',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 325,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 38,
     'rush_td': 1,
     'rush_yds': 100,
     'two_pt': 1},
    'half', 'WR'],
   {'display': '55.5', 'hundredths': 5550}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 409,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 62,
     'rush_td': 0,
     'rush_yds': 132,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '67.0', 'hundredths': 6700}),
  ('normal control 3',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': -4,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 129,
     'rush_td': 0,
     'rush_yds': 50,
     'two_pt': 1},
    'ppr', 'QB'],
   {'display': '41.0', 'hundredths': 4100}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 216,
     'rec': 1,
     'rec_td': 1,
     'rec_yds': 116,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '42.5', 'hundredths': 4250})],
 [('regression: display rounding',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 35,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-4.3', 'hundredths': -425}),
  ('partial repair probe: display rounding',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -3,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '-6.8', 'hundredths': -675}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 184,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': 15,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '42.3', 'hundredths': 4225}),
  ('normal control 1',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 2,
     'pass_yds': 380,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': -4,
     'rush_td': 0,
     'rush_yds': 82,
     'two_pt': 0},
    'std', 'WR'],
   {'display': '35.8', 'hundredths': 3575}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 26,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 70,
     'rush_td': 1,
     'rush_yds': 101,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '39.0', 'hundredths': 3900}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 96,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 82,
     'rush_td': 2,
     'rush_yds': 131,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '73.8', 'hundredths': 7375}),
  ('normal control 4',
   [{'first_downs': 6,
     'fum': 1,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '50.0', 'hundredths': 5000})],
 [('regression: display rounding',
   [{'first_downs': 9,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 152,
     'rec': 1,
     'rec_td': 2,
     'rec_yds': 57,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 1},
    'ppr', 'WR'],
   {'display': '55.3', 'hundredths': 5525}),
  ('partial repair probe: display rounding',
   [{'first_downs': 1,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': -7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -15,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-6.8', 'hundredths': -675}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 61,
     'rush_td': 2,
     'rush_yds': 145,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '60.3', 'hundredths': 6025}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 1,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 63,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': -4,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '32.5', 'hundredths': 3250}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 24,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 50,
     'rush_td': 2,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '17.0', 'hundredths': 1700}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 1,
     'pass_yds': 280,
     'rec': 0,
     'rec_td': 2,
     'rec_yds': 40,
     'rush_td': 2,
     'rush_yds': 133,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '59.0', 'hundredths': 5900}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 3,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 320,
     'rec': 5,
     'rec_td': 2,
     'rec_yds': 20,
     'rush_td': 1,
     'rush_yds': 119,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '58.0', 'hundredths': 5800})],
 [('regression: display rounding',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-7.3', 'hundredths': -725}),
  ('partial repair probe: display rounding',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 9,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 3,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-4.5', 'hundredths': -450}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 17,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 12,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '-7.8', 'hundredths': -775}),
  ('normal control 1',
   [{'first_downs': 3,
     'fum': 3,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 244,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 90,
     'rush_td': 1,
     'rush_yds': 108,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '52.8', 'hundredths': 5275}),
  ('normal control 2',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 229,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 49,
     'rush_td': 0,
     'rush_yds': 151,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '45.5', 'hundredths': 4550}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 338,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 115,
     'rush_td': 0,
     'rush_yds': 52,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '70.0', 'hundredths': 7000}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 183,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '47.0', 'hundredths': 4700})],
 [('regression: display rounding',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 188,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': 110,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '53.3', 'hundredths': 5325}),
  ('partial repair probe: display rounding',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '-6.3', 'hundredths': -625}),
  ('second regression',
   [{'first_downs': 9,
     'fum': 1,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 45,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': 80,
     'rush_td': 2,
     'rush_yds': 9,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '37.3', 'hundredths': 3725}),
  ('normal control 1',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 145,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 65,
     'rush_td': 0,
     'rush_yds': 128,
     'two_pt': 1},
    'ppr', 'QB'],
   {'display': '30.0', 'hundredths': 3000}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 397,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': -2,
     'rush_td': 1,
     'rush_yds': 84,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '58.0', 'hundredths': 5800}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 3,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 25,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 105,
     'rush_td': 0,
     'rush_yds': 10,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '26.8', 'hundredths': 2675}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 38,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 127,
     'rush_td': 0,
     'rush_yds': 9,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '34.5', 'hundredths': 3450})]]
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(stats, fmt, pos):
    def unit(y, per):
        q = abs(y) // per
        return q if y >= 0 else -q
    rec_val = {'std': 0, 'half': 50, 'ppr': 100}[fmt]
    if pos == 'TE':
        rec_val += 50
    pts = 0
    pts += unit(stats['pass_yds'], 25) * 100
    pts += stats['pass_td'] * 400
    pts -= stats['int'] * 200
    pts += unit(stats['rush_yds'], 10) * 100
    pts += stats['rush_td'] * 600
    pts += stats['rec'] * rec_val
    pts += unit(stats['rec_yds'], 10) * 100
    pts += stats['rec_td'] * 600
    pts -= stats['fum_lost'] * 200
    pts += stats['two_pt'] * 200
    pts += stats['first_downs'] * 25
    if stats['pass_yds'] >= 300:
        pts += 300
    if stats['rush_yds'] >= 100:
        pts += 300
    if stats['rec_yds'] >= 100:
        pts += 300
    t = (pts + 5) // 10
    return {'hundredths': pts, 'display': '%d.%d' % (t // 10, t % 10)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: display rounding',
   [{'first_downs': 1,
     'fum': 2,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 240,
     'rec': 3,
     'rec_td': 0,
     'rec_yds': 40,
     'rush_td': 0,
     'rush_yds': 119,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '25.3', 'hundredths': 2525}),
  ('partial repair probe: display rounding',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 2,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 14,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -15,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-3.5', 'hundredths': -350}),
  ('second regression',
   [{'first_downs': 1,
     'fum': 1,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 1,
     'pass_yds': 226,
     'rec': 2,
     'rec_td': 1,
     'rec_yds': 100,
     'rush_td': 0,
     'rush_yds': 47,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '37.3', 'hundredths': 3725}),
  ('normal control 1',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 325,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 38,
     'rush_td': 1,
     'rush_yds': 100,
     'two_pt': 1},
    'half', 'WR'],
   {'display': '55.5', 'hundredths': 5550}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 409,
     'rec': 9,
     'rec_td': 1,
     'rec_yds': 62,
     'rush_td': 0,
     'rush_yds': 132,
     'two_pt': 1},
    'ppr', 'RB'],
   {'display': '67.0', 'hundredths': 6700}),
  ('normal control 3',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': -4,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 129,
     'rush_td': 0,
     'rush_yds': 50,
     'two_pt': 1},
    'ppr', 'QB'],
   {'display': '41.0', 'hundredths': 4100}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 1,
     'fum_lost': 1,
     'int': 1,
     'pass_td': 1,
     'pass_yds': 216,
     'rec': 1,
     'rec_td': 1,
     'rec_yds': 116,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '42.5', 'hundredths': 4250})],
 [('regression: display rounding',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 2,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 35,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -10,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '-4.3', 'hundredths': -425}),
  ('partial repair probe: display rounding',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -3,
     'two_pt': 0},
    'half', 'QB'],
   {'display': '-6.8', 'hundredths': -675}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 0,
     'pass_td': 0,
     'pass_yds': 184,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': 15,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 0},
    'std', 'RB'],
   {'display': '42.3', 'hundredths': 4225}),
  ('normal control 1',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 2,
     'pass_yds': 380,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': -4,
     'rush_td': 0,
     'rush_yds': 82,
     'two_pt': 0},
    'std', 'WR'],
   {'display': '35.8', 'hundredths': 3575}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 2,
     'pass_yds': 26,
     'rec': 9,
     'rec_td': 0,
     'rec_yds': 70,
     'rush_td': 1,
     'rush_yds': 101,
     'two_pt': 0},
    'ppr', 'RB'],
   {'display': '39.0', 'hundredths': 3900}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 96,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 82,
     'rush_td': 2,
     'rush_yds': 131,
     'two_pt': 0},
    'ppr', 'TE'],
   {'display': '73.8', 'hundredths': 7375}),
  ('normal control 4',
   [{'first_downs': 6,
     'fum': 1,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 24,
     'rec': 5,
     'rec_td': 2,
     'rec_yds': 100,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '50.0', 'hundredths': 5000})],
 [('regression: display rounding',
   [{'first_downs': 9,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 152,
     'rec': 1,
     'rec_td': 2,
     'rec_yds': 57,
     'rush_td': 0,
     'rush_yds': 100,
     'two_pt': 1},
    'ppr', 'WR'],
   {'display': '55.3', 'hundredths': 5525}),
  ('partial repair probe: display rounding',
   [{'first_downs': 1,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': -7,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -15,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-6.8', 'hundredths': -675}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 0,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 4,
     'pass_yds': -3,
     'rec': 6,
     'rec_td': 1,
     'rec_yds': 61,
     'rush_td': 2,
     'rush_yds': 145,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '60.3', 'hundredths': 6025}),
  ('normal control 1',
   [{'first_downs': 6,
     'fum': 1,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 63,
     'rec': 10,
     'rec_td': 2,
     'rec_yds': -4,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'QB'],
   {'display': '32.5', 'hundredths': 3250}),
  ('normal control 2',
   [{'first_downs': 4,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 0,
     'pass_yds': 24,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 50,
     'rush_td': 2,
     'rush_yds': -4,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '17.0', 'hundredths': 1700}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 1,
     'pass_yds': 280,
     'rec': 0,
     'rec_td': 2,
     'rec_yds': 40,
     'rush_td': 2,
     'rush_yds': 133,
     'two_pt': 1},
    'ppr', 'TE'],
   {'display': '59.0', 'hundredths': 5900}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 3,
     'fum_lost': 1,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 320,
     'rec': 5,
     'rec_td': 2,
     'rec_yds': 20,
     'rush_td': 1,
     'rush_yds': 119,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '58.0', 'hundredths': 5800})],
 [('regression: display rounding',
   [{'first_downs': 3,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'half', 'RB'],
   {'display': '-7.3', 'hundredths': -725}),
  ('partial repair probe: display rounding',
   [{'first_downs': 6,
     'fum': 2,
     'fum_lost': 1,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 9,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 3,
     'two_pt': 0},
    'std', 'TE'],
   {'display': '-4.5', 'hundredths': -450}),
  ('second regression',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 17,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': 12,
     'two_pt': 0},
    'ppr', 'WR'],
   {'display': '-7.8', 'hundredths': -775}),
  ('normal control 1',
   [{'first_downs': 3,
     'fum': 3,
     'fum_lost': 1,
     'int': 0,
     'pass_td': 4,
     'pass_yds': 244,
     'rec': 2,
     'rec_td': 0,
     'rec_yds': 90,
     'rush_td': 1,
     'rush_yds': 108,
     'two_pt': 0},
    'half', 'WR'],
   {'display': '52.8', 'hundredths': 5275}),
  ('normal control 2',
   [{'first_downs': 2,
     'fum': 2,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 229,
     'rec': 4,
     'rec_td': 0,
     'rec_yds': 49,
     'rush_td': 0,
     'rush_yds': 151,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '45.5', 'hundredths': 4550}),
  ('normal control 3',
   [{'first_downs': 8,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 338,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 115,
     'rush_td': 0,
     'rush_yds': 52,
     'two_pt': 0},
    'half', 'TE'],
   {'display': '70.0', 'hundredths': 7000}),
  ('normal control 4',
   [{'first_downs': 4,
     'fum': 0,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 183,
     'rec': 6,
     'rec_td': 0,
     'rec_yds': 100,
     'rush_td': 1,
     'rush_yds': 99,
     'two_pt': 1},
    'half', 'QB'],
   {'display': '47.0', 'hundredths': 4700})],
 [('regression: display rounding',
   [{'first_downs': 5,
     'fum': 2,
     'fum_lost': 0,
     'int': 2,
     'pass_td': 3,
     'pass_yds': 188,
     'rec': 5,
     'rec_td': 0,
     'rec_yds': 110,
     'rush_td': 2,
     'rush_yds': 99,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '53.3', 'hundredths': 5325}),
  ('partial repair probe: display rounding',
   [{'first_downs': 7,
     'fum': 2,
     'fum_lost': 2,
     'int': 2,
     'pass_td': 0,
     'pass_yds': 13,
     'rec': 0,
     'rec_td': 0,
     'rec_yds': 0,
     'rush_td': 0,
     'rush_yds': -6,
     'two_pt': 0},
    'std', 'QB'],
   {'display': '-6.3', 'hundredths': -625}),
  ('second regression',
   [{'first_downs': 9,
     'fum': 1,
     'fum_lost': 0,
     'int': 3,
     'pass_td': 3,
     'pass_yds': 45,
     'rec': 3,
     'rec_td': 1,
     'rec_yds': 80,
     'rush_td': 2,
     'rush_yds': 9,
     'two_pt': 1},
    'std', 'WR'],
   {'display': '37.3', 'hundredths': 3725}),
  ('normal control 1',
   [{'first_downs': 8,
     'fum': 2,
     'fum_lost': 2,
     'int': 3,
     'pass_td': 0,
     'pass_yds': 145,
     'rec': 10,
     'rec_td': 0,
     'rec_yds': 65,
     'rush_td': 0,
     'rush_yds': 128,
     'two_pt': 1},
    'ppr', 'QB'],
   {'display': '30.0', 'hundredths': 3000}),
  ('normal control 2',
   [{'first_downs': 6,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 4,
     'pass_yds': 397,
     'rec': 5,
     'rec_td': 1,
     'rec_yds': -2,
     'rush_td': 1,
     'rush_yds': 84,
     'two_pt': 1},
    'std', 'TE'],
   {'display': '58.0', 'hundredths': 5800}),
  ('normal control 3',
   [{'first_downs': 1,
     'fum': 3,
     'fum_lost': 3,
     'int': 3,
     'pass_td': 1,
     'pass_yds': 25,
     'rec': 11,
     'rec_td': 2,
     'rec_yds': 105,
     'rush_td': 0,
     'rush_yds': 10,
     'two_pt': 1},
    'half', 'RB'],
   {'display': '26.8', 'hundredths': 2675}),
  ('normal control 4',
   [{'first_downs': 2,
     'fum': 3,
     'fum_lost': 0,
     'int': 1,
     'pass_td': 3,
     'pass_yds': 38,
     'rec': 11,
     'rec_td': 1,
     'rec_yds': 127,
     'rush_td': 0,
     'rush_yds': 9,
     'two_pt': 1},
    'std', 'RB'],
   {'display': '34.5', 'hundredths': 3450})]]
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)

prompt:
A 12.25 score shows as 12.2 on the scoreboard while 12.35 shows 12.3 or 12.4 depending on float noise.

Score a skill-player stat line in integer hundredths. Passing yards earn 1 point per full 25 yards, rushing and receiving yards 1 point per full 10 yards, each category truncated toward zero separately. Pass TD 4, interception -2, rush/receiving TD 6, fumble lost -2 (fumbles recovered by the own team are free), two-point conversion 2, each first down 0.25. Receptions are worth 0/0.5/1 for std/half/ppr, and a TE earns an extra 0.5 per reception on top. 300+ passing, 100+ rushing and 100+ receiving yards each add a 3 point bonus. The display string rounds to tenths half away from zero and never shows -0.0.

split: open-access