FA-94561 / Exam timetabling constraints / Open access
Front-load selection takes one exam too few · case 01
The big-th largest exam can be scheduled last without penalty.
ROOT CAUSE
The ranked slice stops at big - 1.
VERIFIED REPAIR
Take exactly the first big exams of the ranking.
Unsuccessful approach: Selecting by a size threshold includes every exam tied at the boundary.
Case contract
sizes exam -> candidates, period exam -> period index, n_periods, big = how many largest exams are front-loaded (ranked by size descending, ties by id), last = how many final periods to avoid. Return the sorted front-loaded exams scheduled in the final last periods and their count.
Why this case matters
Front-loading large exams gives markers time; it is a standard soft constraint.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(sizes, period, n_periods, big, last):
ranked = sorted(sizes, key=lambda e: (-sizes[e], e))[:big - 1]
bad = sorted(e for e in ranked if period[e] >= n_periods - last)
return [bad, len(bad)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: tie inclusive selection 1', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 20}, {'MATH101': 7, 'MATH101H': 3, 'PHYS110': 2}, 8, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 50, 'MATH101H': 200, 'PHYS110': 50, 'CHEM120': 20, 'BIO130': 80},
{'MATH101': 7, 'MATH101H': 3, 'PHYS110': 9, 'CHEM120': 7, 'BIO130': 3}, 10, 3, 2],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('normal control 5',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 0, 'MATH101H': 4, 'PHYS110': 6, 'CHEM120': 5}, 10, 1, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80,
'MATH101H': 200,
'PHYS110': 80,
'CHEM120': 200,
'BIO130': 80,
'HIST140': 200,
'ECON150': 200},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 4, 'CHEM120': 5, 'BIO130': 3, 'HIST140': 4, 'ECON150': 2}, 8, 3,
2],
[[], 0]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 120, 'HIST140': 20},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 3, 'CHEM120': 5, 'BIO130': 1, 'HIST140': 1}, 6, 2, 2],
[['CHEM120', 'MATH101H'], 2]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 120, 'PHYS110': 80, 'CHEM120': 20},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4}, 10, 3, 2],
[[], 0])],
[('regression: tie inclusive selection 1', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2],
[['A', 'B'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 200}, {'MATH101': 5, 'MATH101H': 7, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'MATH101H', 'PHYS110'], 3]),
('partial repair guard 3',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 20, 'CHEM120': 120, 'BIO130': 80},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 5, 'CHEM120': 0, 'BIO130': 0}, 6, 3, 3],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 5',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 20},
{'MATH101': 9, 'MATH101H': 7, 'PHYS110': 5, 'CHEM120': 3}, 10, 2, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 20},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 2, 'BIO130': 2}, 8, 3, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 200, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 120, 'BIO130': 20, 'HIST140': 120},
{'MATH101': 3, 'MATH101H': 2, 'PHYS110': 2, 'CHEM120': 0, 'BIO130': 4, 'HIST140': 5}, 6, 1, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 20, 'PHYS110': 200, 'CHEM120': 50, 'BIO130': 50, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 4, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 4}, 6, 2, 3],
[['HIST140', 'PHYS110'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 80}, {'MATH101': 7, 'MATH101H': 5, 'PHYS110': 3}, 8, 1, 3],
[['MATH101H'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 3, 'MATH101H': 0, 'PHYS110': 0, 'CHEM120': 0}, 6, 1, 3],
[[], 0]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('boundary control 5', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 6, 'PHYS110': 6, 'CHEM120': 7, 'BIO130': 0, 'HIST140': 0}, 8, 3, 3],
[['CHEM120'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 80}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 4}, 6, 2, 3],
[['MATH101'], 1]),
('normal control 8',
[{'MATH101': 80,
'MATH101H': 50,
'PHYS110': 50,
'CHEM120': 80,
'BIO130': 20,
'HIST140': 200,
'ECON150': 80},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 3, 'CHEM120': 4, 'BIO130': 4, 'HIST140': 4, 'ECON150': 1}, 6, 1,
2],
[['HIST140'], 1])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4, 'BIO130': 5, 'HIST140': 3}, 6, 2, 3],
[['CHEM120', 'HIST140'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 50}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'PHYS110'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 200},
{'MATH101': 4, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 3, 'BIO130': 0, 'HIST140': 2}, 6, 3, 3],
[['CHEM120'], 1]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 120}, {'MATH101': 0, 'MATH101H': 3, 'PHYS110': 2}, 6, 1, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 1, 'CHEM120': 4}, 6, 3, 3],
[['CHEM120', 'MATH101', 'MATH101H'], 3]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 120, 'MATH101H': 20, 'PHYS110': 120, 'CHEM120': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 9, 'CHEM120': 2}, 10, 3, 2],
[['PHYS110'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 50, 'PHYS110': 80}, {'MATH101': 4, 'MATH101H': 0, 'PHYS110': 0}, 6, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 200,
'MATH101H': 200,
'PHYS110': 50,
'CHEM120': 50,
'BIO130': 80,
'HIST140': 120,
'ECON150': 120},
{'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 3, 'ECON150': 3}, 6, 1,
2],
[['MATH101'], 1]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('normal control 6',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 80},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 1}, 6, 3, 3],
[['MATH101H'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 50},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 4}, 6, 3, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 20, 'CHEM120': 20, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 7, 'MATH101H': 1, 'PHYS110': 4, 'CHEM120': 9, 'BIO130': 2, 'HIST140': 8}, 10, 1, 3],
[['HIST140'], 1])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: tie inclusive selection 1 | [[], 0] | [['A'], 1] | Failed |
| regression variant: tie inclusive selection 2 | [[], 0] | [['MATH101'], 1] | Failed |
| partial repair guard 3 | [[], 0] | [[], 0] | Passed |
| boundary control 4 | [['A'], 1] | [['A', 'B'], 2] | Failed |
| normal control 5 | [[], 0] | [[], 0] | Passed |
| normal control 6 | [[], 0] | [[], 0] | Passed |
| normal control 7 | [['CHEM120'], 1] | [['CHEM120', 'MATH101H'], 2] | Failed |
| normal control 8 | [[], 0] | [[], 0] | Passed |
SHA-256 / fd75c05624a58da3f84247f29104f2aec14dfc811cd3023af883c376a399355f
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(sizes, period, n_periods, big, last):
ranked = [e for e in sizes if sizes[e] >= sorted(sizes.values())[-big]]
bad = sorted(e for e in ranked if period[e] >= n_periods - last)
return [bad, len(bad)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: tie inclusive selection 1', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 20}, {'MATH101': 7, 'MATH101H': 3, 'PHYS110': 2}, 8, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 50, 'MATH101H': 200, 'PHYS110': 50, 'CHEM120': 20, 'BIO130': 80},
{'MATH101': 7, 'MATH101H': 3, 'PHYS110': 9, 'CHEM120': 7, 'BIO130': 3}, 10, 3, 2],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('normal control 5',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 0, 'MATH101H': 4, 'PHYS110': 6, 'CHEM120': 5}, 10, 1, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80,
'MATH101H': 200,
'PHYS110': 80,
'CHEM120': 200,
'BIO130': 80,
'HIST140': 200,
'ECON150': 200},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 4, 'CHEM120': 5, 'BIO130': 3, 'HIST140': 4, 'ECON150': 2}, 8, 3,
2],
[[], 0]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 120, 'HIST140': 20},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 3, 'CHEM120': 5, 'BIO130': 1, 'HIST140': 1}, 6, 2, 2],
[['CHEM120', 'MATH101H'], 2]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 120, 'PHYS110': 80, 'CHEM120': 20},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4}, 10, 3, 2],
[[], 0])],
[('regression: tie inclusive selection 1', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2],
[['A', 'B'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 200}, {'MATH101': 5, 'MATH101H': 7, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'MATH101H', 'PHYS110'], 3]),
('partial repair guard 3',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 20, 'CHEM120': 120, 'BIO130': 80},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 5, 'CHEM120': 0, 'BIO130': 0}, 6, 3, 3],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 5',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 20},
{'MATH101': 9, 'MATH101H': 7, 'PHYS110': 5, 'CHEM120': 3}, 10, 2, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 20},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 2, 'BIO130': 2}, 8, 3, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 200, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 120, 'BIO130': 20, 'HIST140': 120},
{'MATH101': 3, 'MATH101H': 2, 'PHYS110': 2, 'CHEM120': 0, 'BIO130': 4, 'HIST140': 5}, 6, 1, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 20, 'PHYS110': 200, 'CHEM120': 50, 'BIO130': 50, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 4, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 4}, 6, 2, 3],
[['HIST140', 'PHYS110'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 80}, {'MATH101': 7, 'MATH101H': 5, 'PHYS110': 3}, 8, 1, 3],
[['MATH101H'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 3, 'MATH101H': 0, 'PHYS110': 0, 'CHEM120': 0}, 6, 1, 3],
[[], 0]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('boundary control 5', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 6, 'PHYS110': 6, 'CHEM120': 7, 'BIO130': 0, 'HIST140': 0}, 8, 3, 3],
[['CHEM120'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 80}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 4}, 6, 2, 3],
[['MATH101'], 1]),
('normal control 8',
[{'MATH101': 80,
'MATH101H': 50,
'PHYS110': 50,
'CHEM120': 80,
'BIO130': 20,
'HIST140': 200,
'ECON150': 80},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 3, 'CHEM120': 4, 'BIO130': 4, 'HIST140': 4, 'ECON150': 1}, 6, 1,
2],
[['HIST140'], 1])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4, 'BIO130': 5, 'HIST140': 3}, 6, 2, 3],
[['CHEM120', 'HIST140'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 50}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'PHYS110'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 200},
{'MATH101': 4, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 3, 'BIO130': 0, 'HIST140': 2}, 6, 3, 3],
[['CHEM120'], 1]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 120}, {'MATH101': 0, 'MATH101H': 3, 'PHYS110': 2}, 6, 1, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 1, 'CHEM120': 4}, 6, 3, 3],
[['CHEM120', 'MATH101', 'MATH101H'], 3]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 120, 'MATH101H': 20, 'PHYS110': 120, 'CHEM120': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 9, 'CHEM120': 2}, 10, 3, 2],
[['PHYS110'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 50, 'PHYS110': 80}, {'MATH101': 4, 'MATH101H': 0, 'PHYS110': 0}, 6, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 200,
'MATH101H': 200,
'PHYS110': 50,
'CHEM120': 50,
'BIO130': 80,
'HIST140': 120,
'ECON150': 120},
{'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 3, 'ECON150': 3}, 6, 1,
2],
[['MATH101'], 1]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('normal control 6',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 80},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 1}, 6, 3, 3],
[['MATH101H'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 50},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 4}, 6, 3, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 20, 'CHEM120': 20, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 7, 'MATH101H': 1, 'PHYS110': 4, 'CHEM120': 9, 'BIO130': 2, 'HIST140': 8}, 10, 1, 3],
[['HIST140'], 1])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: tie inclusive selection 1 | [['A'], 1] | [['A'], 1] | Passed |
| regression variant: tie inclusive selection 2 | [['MATH101'], 1] | [['MATH101'], 1] | Passed |
| partial repair guard 3 | [['PHYS110'], 1] | [[], 0] | Failed |
| boundary control 4 | [['A', 'B'], 2] | [['A', 'B'], 2] | Passed |
| normal control 5 | [[], 0] | [[], 0] | Passed |
| normal control 6 | [[], 0] | [[], 0] | Passed |
| normal control 7 | [['CHEM120', 'MATH101H'], 2] | [['CHEM120', 'MATH101H'], 2] | Passed |
| normal control 8 | [[], 0] | [[], 0] | Passed |
SHA-256 / 8a654720a1e8520f4e0cc6feac7004d695a80100f45a37617060ef191e7cbd7d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(sizes, period, n_periods, big, last):
ranked = sorted(sizes, key=lambda e: (-sizes[e], e))[:big]
bad = sorted(e for e in ranked if period[e] >= n_periods - last)
return [bad, len(bad)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: tie inclusive selection 1', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 20}, {'MATH101': 7, 'MATH101H': 3, 'PHYS110': 2}, 8, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 50, 'MATH101H': 200, 'PHYS110': 50, 'CHEM120': 20, 'BIO130': 80},
{'MATH101': 7, 'MATH101H': 3, 'PHYS110': 9, 'CHEM120': 7, 'BIO130': 3}, 10, 3, 2],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('normal control 5',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 0, 'MATH101H': 4, 'PHYS110': 6, 'CHEM120': 5}, 10, 1, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80,
'MATH101H': 200,
'PHYS110': 80,
'CHEM120': 200,
'BIO130': 80,
'HIST140': 200,
'ECON150': 200},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 4, 'CHEM120': 5, 'BIO130': 3, 'HIST140': 4, 'ECON150': 2}, 8, 3,
2],
[[], 0]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 120, 'HIST140': 20},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 3, 'CHEM120': 5, 'BIO130': 1, 'HIST140': 1}, 6, 2, 2],
[['CHEM120', 'MATH101H'], 2]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 120, 'PHYS110': 80, 'CHEM120': 20},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4}, 10, 3, 2],
[[], 0])],
[('regression: tie inclusive selection 1', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2],
[['A', 'B'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 200}, {'MATH101': 5, 'MATH101H': 7, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'MATH101H', 'PHYS110'], 3]),
('partial repair guard 3',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 20, 'CHEM120': 120, 'BIO130': 80},
{'MATH101': 2, 'MATH101H': 4, 'PHYS110': 5, 'CHEM120': 0, 'BIO130': 0}, 6, 3, 3],
[[], 0]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 5',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 20},
{'MATH101': 9, 'MATH101H': 7, 'PHYS110': 5, 'CHEM120': 3}, 10, 2, 2],
[[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 200, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 20},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 2, 'BIO130': 2}, 8, 3, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 200, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 120, 'BIO130': 20, 'HIST140': 120},
{'MATH101': 3, 'MATH101H': 2, 'PHYS110': 2, 'CHEM120': 0, 'BIO130': 4, 'HIST140': 5}, 6, 1, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 20, 'PHYS110': 200, 'CHEM120': 50, 'BIO130': 50, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 4, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 4}, 6, 2, 3],
[['HIST140', 'PHYS110'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 80}, {'MATH101': 7, 'MATH101H': 5, 'PHYS110': 3}, 8, 1, 3],
[['MATH101H'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80},
{'MATH101': 3, 'MATH101H': 0, 'PHYS110': 0, 'CHEM120': 0}, 6, 1, 3],
[[], 0]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('boundary control 5', [{'A': 80, 'B': 80, 'C': 20}, {'A': 1, 'B': 9, 'C': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 80},
{'MATH101': 5, 'MATH101H': 6, 'PHYS110': 6, 'CHEM120': 7, 'BIO130': 0, 'HIST140': 0}, 8, 3, 3],
[['CHEM120'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 120, 'PHYS110': 80}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 4}, 6, 2, 3],
[['MATH101'], 1]),
('normal control 8',
[{'MATH101': 80,
'MATH101H': 50,
'PHYS110': 50,
'CHEM120': 80,
'BIO130': 20,
'HIST140': 200,
'ECON150': 80},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 3, 'CHEM120': 4, 'BIO130': 4, 'HIST140': 4, 'ECON150': 1}, 6, 1,
2],
[['HIST140'], 1])],
[('regression: tie inclusive selection 1',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 120, 'CHEM120': 200, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 5, 'CHEM120': 4, 'BIO130': 5, 'HIST140': 3}, 6, 2, 3],
[['CHEM120', 'HIST140'], 2]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 120, 'MATH101H': 80, 'PHYS110': 50}, {'MATH101': 5, 'MATH101H': 1, 'PHYS110': 7}, 8, 3, 3],
[['MATH101', 'PHYS110'], 2]),
('partial repair guard 3',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 80, 'CHEM120': 80, 'BIO130': 80, 'HIST140': 200},
{'MATH101': 4, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 3, 'BIO130': 0, 'HIST140': 2}, 6, 3, 3],
[['CHEM120'], 1]),
('boundary control 4', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 7, 'B': 9}, 10, 1, 2], [[], 0]),
('normal control 6',
[{'MATH101': 80, 'MATH101H': 20, 'PHYS110': 120}, {'MATH101': 0, 'MATH101H': 3, 'PHYS110': 2}, 6, 1, 3],
[[], 0]),
('normal control 7',
[{'MATH101': 50, 'MATH101H': 80, 'PHYS110': 50, 'CHEM120': 80},
{'MATH101': 5, 'MATH101H': 4, 'PHYS110': 1, 'CHEM120': 4}, 6, 3, 3],
[['CHEM120', 'MATH101', 'MATH101H'], 3]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120}, {'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0}, 6, 3, 2],
[['MATH101', 'MATH101H'], 2])],
[('regression: tie inclusive selection 1',
[{'MATH101': 120, 'MATH101H': 20, 'PHYS110': 120, 'CHEM120': 120},
{'MATH101': 5, 'MATH101H': 2, 'PHYS110': 9, 'CHEM120': 2}, 10, 3, 2],
[['PHYS110'], 1]),
('regression variant: tie inclusive selection 2',
[{'MATH101': 50, 'MATH101H': 50, 'PHYS110': 80}, {'MATH101': 4, 'MATH101H': 0, 'PHYS110': 0}, 6, 2, 3],
[['MATH101'], 1]),
('partial repair guard 3',
[{'MATH101': 200,
'MATH101H': 200,
'PHYS110': 50,
'CHEM120': 50,
'BIO130': 80,
'HIST140': 120,
'ECON150': 120},
{'MATH101': 5, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 2, 'BIO130': 2, 'HIST140': 3, 'ECON150': 3}, 6, 1,
2],
[['MATH101'], 1]),
('boundary control 4', [{'A': 80, 'B': 80, 'C': 20}, {'A': 9, 'B': 9, 'C': 9}, 10, 2, 2], [['A', 'B'], 2]),
('boundary control 5', [{'A': 100, 'B': 50}, {'A': 8, 'B': 9}, 10, 1, 2], [['A'], 1]),
('normal control 6',
[{'MATH101': 20, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 80},
{'MATH101': 4, 'MATH101H': 5, 'PHYS110': 0, 'CHEM120': 1}, 6, 3, 3],
[['MATH101H'], 1]),
('normal control 7',
[{'MATH101': 80, 'MATH101H': 80, 'PHYS110': 120, 'CHEM120': 50},
{'MATH101': 3, 'MATH101H': 3, 'PHYS110': 3, 'CHEM120': 4}, 6, 3, 2],
[[], 0]),
('normal control 8',
[{'MATH101': 20, 'MATH101H': 50, 'PHYS110': 20, 'CHEM120': 20, 'BIO130': 50, 'HIST140': 120},
{'MATH101': 7, 'MATH101H': 1, 'PHYS110': 4, 'CHEM120': 9, 'BIO130': 2, 'HIST140': 8}, 10, 1, 3],
[['HIST140'], 1])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: tie inclusive selection 1 | [['A'], 1] | [['A'], 1] | Passed |
| regression variant: tie inclusive selection 2 | [['MATH101'], 1] | [['MATH101'], 1] | Passed |
| partial repair guard 3 | [[], 0] | [[], 0] | Passed |
| boundary control 4 | [['A', 'B'], 2] | [['A', 'B'], 2] | Passed |
| normal control 5 | [[], 0] | [[], 0] | Passed |
| normal control 6 | [[], 0] | [[], 0] | Passed |
| normal control 7 | [['CHEM120', 'MATH101H'], 2] | [['CHEM120', 'MATH101H'], 2] | Passed |
| normal control 8 | [[], 0] | [[], 0] | Passed |
SHA-256 / b11f969fa7668fd643b90b18addb2661c0a9148da0bd600ff786c7e4802fe1c0
Verification & scope
Stipulated toy exam-timetabling rule set for a bounded model; it does not claim conformance with any institution's regulations or a benchmark specification, and it performs no search or optimisation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:52:05.507823+00:00.
Case digest / 89991f8294092d547f486e7869c2907b968a1c040a2adc17ac4df1b347503f20