FAILURE MAP
← Case archive

FA-94806 / Exam timetabling constraints / Open access

Room-period at the concurrent exam limit reported · case 01

Rooms hosting exactly k exams are flagged.

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

ROOT CAUSE

The load comparison is inclusive.

VERIFIED REPAIR

Report only more than k distinct exams.

Unsuccessful approach: Counting assignment rows lets duplicate rows exceed the limit.

Case contract

assign [exam, room, period] (rows may repeat); building room -> building; k = maximum distinct exams per room-period. Findings per exam (by id): multi_period if it occupies more than one period, split_buildings if its rooms span more than one building; then room_load for room-periods hosting more than k distinct exams.

Why this case matters

Split exams must stay in one building and rooms have limits on concurrent exams.

1 / The failure

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

N = 1
observations = []
def solve(assign, building, k):
    rooms_of = {}
    periods_of = {}
    load = {}
    for ex, r, p in assign:
        rooms_of.setdefault(ex, []).append(r)
        periods_of.setdefault(ex, set()).add(p)
        load.setdefault((r, p), set()).add(ex)
    out = []
    for ex in sorted(rooms_of):
        if len(periods_of[ex]) > 1:
            out.append(['multi_period', ex])
        if len({building[r] for r in rooms_of[ex]}) > 1:
            out.append(['split_buildings', ex])
    for (r, p) in sorted(load):
        if len(load[(r, p)]) >= k:
            out.append(['room_load', r, p])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('regression variant: room load distinct 2',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R3', 2],
     ['MATH101', 'R4', 1], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]),
  ('partial repair guard 3',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 6',
   [[['MATH101H', 'R3', 1], ['MATH101H', 'R2', 0], ['MATH101', 'R2', 2], ['PHYS110', 'R1', 2],
     ['MATH101', 'R2', 0], ['MATH101', 'R4', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['CHEM120', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['MATH101H', 'R2', 1], ['MATH101H', 'R3', 0], ['CHEM120', 'R4', 2], ['MATH101H', 'R2', 0],
     ['CHEM120', 'R3', 1], ['CHEM120', 'R2', 0], ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R3', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['split_buildings', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('partial repair guard 3',
   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 4',
   [[['MATH101H', 'R2', 1], ['CHEM120', 'R2', 0], ['MATH101', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 5',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R4', 1], ['PHYS110', 'R4', 1], ['CHEM120', 'R4', 2],
     ['CHEM120', 'R4', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['room_load', 'R4', 1]]),
  ('normal control 6',
   [[['CHEM120', 'R1', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['PHYS110', 'R2', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 8',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('regression variant: room load distinct 2',
   [[['MATH101H', 'R1', 0], ['MATH101H', 'R1', 2], ['MATH101', 'R2', 0], ['CHEM120', 'R3', 2],
     ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'MATH101H']]),
  ('partial repair guard 3',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['CHEM120', 'R2', 2], ['MATH101', 'R1', 2], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101H', 'R4', 1], ['CHEM120', 'R2', 2], ['MATH101', 'R4', 2], ['PHYS110', 'R2', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R4', 2], ['MATH101', 'R3', 1], ['PHYS110', 'R3', 1],
     ['PHYS110', 'R1', 1], ['PHYS110', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'PHYS110'], ['room_load', 'R3', 1]]),
  ('normal control 8',
   [[['MATH101H', 'R2', 2], ['MATH101H', 'R4', 1], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R2', 1], ['MATH101', 'R1', 2], ['MATH101', 'R1', 2], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R4', 0], ['CHEM120', 'R2', 2], ['MATH101', 'R2', 2], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110'],
    ['room_load', 'R1', 2], ['room_load', 'R2', 2]]),
  ('partial repair guard 3',
   [[['MATH101H', 'R4', 0], ['CHEM120', 'R4', 1], ['MATH101H', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 5',
   [[['MATH101', 'R1', 2], ['PHYS110', 'R1', 1], ['CHEM120', 'R2', 1], ['MATH101H', 'R3', 0],
     ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['room_load', 'R1', 1]]),
  ('normal control 6',
   [[['MATH101H', 'R4', 2], ['MATH101', 'R1', 0], ['PHYS110', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['CHEM120', 'R3', 2], ['MATH101', 'R2', 0], ['MATH101H', 'R4', 1], ['MATH101H', 'R4', 0],
     ['MATH101H', 'R1', 0], ['PHYS110', 'R2', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('partial repair guard 3',
   [[['MATH101H', 'R2', 2], ['MATH101', 'R1', 1], ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('normal control 5',
   [[['CHEM120', 'R1', 2], ['CHEM120', 'R1', 0], ['MATH101H', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101', 'R3', 1], ['PHYS110', 'R4', 0], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H']]),
  ('normal control 7',
   [[['PHYS110', 'R3', 1], ['PHYS110', 'R3', 2], ['PHYS110', 'R4', 1], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('normal control 8',
   [[['PHYS110', 'R2', 0], ['CHEM120', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 0],
     ['MATH101', 'R4', 0], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120']])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: room load distinct 1[['room_load', 'R1', 0], ['room_load', 'R2', 0]][]Failed
regression variant: room load distinct 2[['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['room_load', 'R2', 0], ['room_load', 'R3', 1], ['room_load', 'R3', 2], ['room_load', 'R4', 0], ['room_load', 'R4', 1]][['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]Failed
partial repair guard 3[['room_load', 'R1', 1], ['room_load', 'R3', 2]][]Failed
boundary control 4[['multi_period', 'A'], ['room_load', 'R1', 0], ['room_load', 'R1', 1]][['multi_period', 'A']]Failed
normal control 5[][]Passed
normal control 6[['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R1', 2], ['room_load', 'R2', 0], ['room_load', 'R2', 2], ['room_load', 'R3', 1], ['room_load', 'R4', 1]][['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]Failed
normal control 7[][]Passed
normal control 8[['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R2', 1], ['room_load', 'R3', 0], ['room_load', 'R3', 1], ['room_load', 'R4', 2]][['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]]Failed

SHA-256 / f6725280cc50baeab191aa01df154766cd5d6fffd45e3b2e6d3de42f263b60c8

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(assign, building, k):
    rooms_of = {}
    periods_of = {}
    load = {}
    for ex, r, p in assign:
        rooms_of.setdefault(ex, []).append(r)
        periods_of.setdefault(ex, set()).add(p)
        load.setdefault((r, p), set()).add(ex)
    out = []
    for ex in sorted(rooms_of):
        if len(periods_of[ex]) > 1:
            out.append(['multi_period', ex])
        if len({building[r] for r in rooms_of[ex]}) > 1:
            out.append(['split_buildings', ex])
    for (r, p) in sorted(load):
        if sum(1 for e, rr, pp in assign if rr == r and pp == p) > k:
            out.append(['room_load', r, p])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('regression variant: room load distinct 2',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R3', 2],
     ['MATH101', 'R4', 1], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]),
  ('partial repair guard 3',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 6',
   [[['MATH101H', 'R3', 1], ['MATH101H', 'R2', 0], ['MATH101', 'R2', 2], ['PHYS110', 'R1', 2],
     ['MATH101', 'R2', 0], ['MATH101', 'R4', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['CHEM120', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['MATH101H', 'R2', 1], ['MATH101H', 'R3', 0], ['CHEM120', 'R4', 2], ['MATH101H', 'R2', 0],
     ['CHEM120', 'R3', 1], ['CHEM120', 'R2', 0], ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R3', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['split_buildings', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('partial repair guard 3',
   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 4',
   [[['MATH101H', 'R2', 1], ['CHEM120', 'R2', 0], ['MATH101', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 5',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R4', 1], ['PHYS110', 'R4', 1], ['CHEM120', 'R4', 2],
     ['CHEM120', 'R4', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['room_load', 'R4', 1]]),
  ('normal control 6',
   [[['CHEM120', 'R1', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['PHYS110', 'R2', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 8',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('regression variant: room load distinct 2',
   [[['MATH101H', 'R1', 0], ['MATH101H', 'R1', 2], ['MATH101', 'R2', 0], ['CHEM120', 'R3', 2],
     ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'MATH101H']]),
  ('partial repair guard 3',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['CHEM120', 'R2', 2], ['MATH101', 'R1', 2], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101H', 'R4', 1], ['CHEM120', 'R2', 2], ['MATH101', 'R4', 2], ['PHYS110', 'R2', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R4', 2], ['MATH101', 'R3', 1], ['PHYS110', 'R3', 1],
     ['PHYS110', 'R1', 1], ['PHYS110', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'PHYS110'], ['room_load', 'R3', 1]]),
  ('normal control 8',
   [[['MATH101H', 'R2', 2], ['MATH101H', 'R4', 1], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R2', 1], ['MATH101', 'R1', 2], ['MATH101', 'R1', 2], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R4', 0], ['CHEM120', 'R2', 2], ['MATH101', 'R2', 2], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110'],
    ['room_load', 'R1', 2], ['room_load', 'R2', 2]]),
  ('partial repair guard 3',
   [[['MATH101H', 'R4', 0], ['CHEM120', 'R4', 1], ['MATH101H', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 5',
   [[['MATH101', 'R1', 2], ['PHYS110', 'R1', 1], ['CHEM120', 'R2', 1], ['MATH101H', 'R3', 0],
     ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['room_load', 'R1', 1]]),
  ('normal control 6',
   [[['MATH101H', 'R4', 2], ['MATH101', 'R1', 0], ['PHYS110', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['CHEM120', 'R3', 2], ['MATH101', 'R2', 0], ['MATH101H', 'R4', 1], ['MATH101H', 'R4', 0],
     ['MATH101H', 'R1', 0], ['PHYS110', 'R2', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('partial repair guard 3',
   [[['MATH101H', 'R2', 2], ['MATH101', 'R1', 1], ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('normal control 5',
   [[['CHEM120', 'R1', 2], ['CHEM120', 'R1', 0], ['MATH101H', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101', 'R3', 1], ['PHYS110', 'R4', 0], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H']]),
  ('normal control 7',
   [[['PHYS110', 'R3', 1], ['PHYS110', 'R3', 2], ['PHYS110', 'R4', 1], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('normal control 8',
   [[['PHYS110', 'R2', 0], ['CHEM120', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 0],
     ['MATH101', 'R4', 0], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120']])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: room load distinct 1[][]Passed
regression variant: room load distinct 2[['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['room_load', 'R2', 0]][['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]Failed
partial repair guard 3[['room_load', 'R1', 1], ['room_load', 'R3', 2]][]Failed
boundary control 4[['multi_period', 'A']][['multi_period', 'A']]Passed
normal control 5[][]Passed
normal control 6[['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R2', 2]][['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]Failed
normal control 7[][]Passed
normal control 8[['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]][['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]]Passed

SHA-256 / 5f711eae581a6ea32277083c2b63ef95c52880ab8bc4206c5bfbeacd7fbc357d

3 / The verified repair

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

N = 1
observations = []
def solve(assign, building, k):
    rooms_of = {}
    periods_of = {}
    load = {}
    for ex, r, p in assign:
        rooms_of.setdefault(ex, []).append(r)
        periods_of.setdefault(ex, set()).add(p)
        load.setdefault((r, p), set()).add(ex)
    out = []
    for ex in sorted(rooms_of):
        if len(periods_of[ex]) > 1:
            out.append(['multi_period', ex])
        if len({building[r] for r in rooms_of[ex]}) > 1:
            out.append(['split_buildings', ex])
    for (r, p) in sorted(load):
        if len(load[(r, p)]) > k:
            out.append(['room_load', r, p])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('regression variant: room load distinct 2',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R3', 2],
     ['MATH101', 'R4', 1], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]),
  ('partial repair guard 3',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 6',
   [[['MATH101H', 'R3', 1], ['MATH101H', 'R2', 0], ['MATH101', 'R2', 2], ['PHYS110', 'R1', 2],
     ['MATH101', 'R2', 0], ['MATH101', 'R4', 1], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['CHEM120', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['MATH101H', 'R2', 1], ['MATH101H', 'R3', 0], ['CHEM120', 'R4', 2], ['MATH101H', 'R2', 0],
     ['CHEM120', 'R3', 1], ['CHEM120', 'R2', 0], ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R3', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['split_buildings', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R3', 2], ['MATH101H', 'R1', 1], ['MATH101', 'R3', 2], ['MATH101H', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('partial repair guard 3',
   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 4',
   [[['MATH101H', 'R2', 1], ['CHEM120', 'R2', 0], ['MATH101', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 5',
   [[['CHEM120', 'R4', 0], ['CHEM120', 'R4', 1], ['PHYS110', 'R4', 1], ['CHEM120', 'R4', 2],
     ['CHEM120', 'R4', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['room_load', 'R4', 1]]),
  ('normal control 6',
   [[['CHEM120', 'R1', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['PHYS110', 'R2', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 8',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R2', 0], ['MATH101', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('regression variant: room load distinct 2',
   [[['MATH101H', 'R1', 0], ['MATH101H', 'R1', 2], ['MATH101', 'R2', 0], ['CHEM120', 'R3', 2],
     ['MATH101', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'MATH101H']]),
  ('partial repair guard 3',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('normal control 5',
   [[['CHEM120', 'R2', 2], ['MATH101', 'R1', 2], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101H', 'R4', 1], ['CHEM120', 'R2', 2], ['MATH101', 'R4', 2], ['PHYS110', 'R2', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('normal control 7',
   [[['MATH101H', 'R3', 1], ['MATH101', 'R4', 2], ['MATH101', 'R3', 1], ['PHYS110', 'R3', 1],
     ['PHYS110', 'R1', 1], ['PHYS110', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'PHYS110'], ['room_load', 'R3', 1]]),
  ('normal control 8',
   [[['MATH101H', 'R2', 2], ['MATH101H', 'R4', 1], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 1]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['MATH101', 'R2', 1], ['MATH101', 'R1', 2], ['MATH101', 'R1', 2], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R4', 0], ['CHEM120', 'R2', 2], ['MATH101', 'R2', 2], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110'],
    ['room_load', 'R1', 2], ['room_load', 'R2', 2]]),
  ('partial repair guard 3',
   [[['MATH101H', 'R4', 0], ['CHEM120', 'R4', 1], ['MATH101H', 'R4', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R1', 0], ['B', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 5',
   [[['MATH101', 'R1', 2], ['PHYS110', 'R1', 1], ['CHEM120', 'R2', 1], ['MATH101H', 'R3', 0],
     ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101'], ['room_load', 'R1', 1]]),
  ('normal control 6',
   [[['MATH101H', 'R4', 2], ['MATH101', 'R1', 0], ['PHYS110', 'R3', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 7',
   [[['MATH101', 'R3', 2], ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   []),
  ('normal control 8',
   [[['CHEM120', 'R3', 2], ['MATH101', 'R2', 0], ['MATH101H', 'R4', 1], ['MATH101H', 'R4', 0],
     ['MATH101H', 'R1', 0], ['PHYS110', 'R2', 1], ['MATH101', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'],
    ['split_buildings', 'MATH101H']])],
 [('regression: room load distinct 1',
   [[['A', 'R1', 0], ['A', 'R1', 2]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'A']]),
  ('regression variant: room load distinct 2',
   [[['PHYS110', 'R4', 1], ['CHEM120', 'R2', 2], ['PHYS110', 'R1', 0], ['CHEM120', 'R2', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('partial repair guard 3',
   [[['MATH101H', 'R2', 2], ['MATH101', 'R1', 1], ['MATH101', 'R1', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   []),
  ('boundary control 4',
   [[['A', 'R1', 0], ['A', 'R2', 0]], {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1], []),
  ('normal control 5',
   [[['CHEM120', 'R1', 2], ['CHEM120', 'R1', 0], ['MATH101H', 'R3', 2]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120']]),
  ('normal control 6',
   [[['MATH101', 'R3', 1], ['PHYS110', 'R4', 0], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'MATH101H']]),
  ('normal control 7',
   [[['PHYS110', 'R3', 1], ['PHYS110', 'R3', 2], ['PHYS110', 'R4', 1], ['PHYS110', 'R1', 2],
     ['PHYS110', 'R3', 1]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 2],
   [['multi_period', 'PHYS110'], ['split_buildings', 'PHYS110']]),
  ('normal control 8',
   [[['PHYS110', 'R2', 0], ['CHEM120', 'R1', 1], ['CHEM120', 'R3', 2], ['CHEM120', 'R3', 0],
     ['MATH101', 'R4', 0], ['PHYS110', 'R2', 0]],
    {'R1': 'north', 'R2': 'north', 'R3': 'south', 'R4': 'south'}, 1],
   [['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120']])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: room load distinct 1[][]Passed
regression variant: room load distinct 2[['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']][['multi_period', 'CHEM120'], ['multi_period', 'MATH101'], ['split_buildings', 'MATH101']]Passed
partial repair guard 3[][]Passed
boundary control 4[['multi_period', 'A']][['multi_period', 'A']]Passed
normal control 5[][]Passed
normal control 6[['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]][['multi_period', 'MATH101'], ['split_buildings', 'MATH101'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0]]Passed
normal control 7[][]Passed
normal control 8[['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]][['multi_period', 'CHEM120'], ['split_buildings', 'CHEM120'], ['multi_period', 'MATH101H'], ['split_buildings', 'MATH101H'], ['room_load', 'R2', 0], ['room_load', 'R3', 0]]Passed

SHA-256 / 2cec70aee5f56e0ceb553d5cc776bcb68412a5259674521574f755f420138592

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:07.848265+00:00.

Case digest / b119e095b1b7a9e7b27050536c7c4d16c0260a4139cd2f8f65f90075c2e07559