{"abstract":"The long exam starts late in the day and overruns.","category":"Exam timetabling constraints","checks":8,"contract":"Each clash [student, exam a, exam b] shares a start time. The longer exam is sat first (ties by id), then a 15-minute supervised break, then the second exam. Return [student, first, second, second start, whether the second exam ends by day_end (inclusive)].","evaluation_group":"w2-exam-timetabling-constraints-clash-sequential-sitting","failed_approach":"Ordering only by id ignores duration.","family":"w2-exam-timetabling-constraints-clash-sequential-sitting-longer-first","id":"FA-94666","implementations":{"attempt":{"sha256":"c5d401e99daeab6f0c053896da19b8d2bf557866c92c1e1842f24f6c916ef6ee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clashes, dur, start, day_end):\n    out = []\n    for st, a, b in clashes:\n        first, second = sorted([a, b], key=lambda e: e)\n        s2 = start + dur[first] + 15\n        out.append([st, first, second, s2, s2 + dur[second] <= day_end])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 180}, 600, 1080],\n   [['s1', 'B', 'A', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1080],\n   [['s5', 'MATH101H', 'HIST140', 975, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 180},\n    840, 1080],\n   [['s2', 'MATH101', 'BIO130', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('normal control 5',\n   [[['s4', 'PHYS110', 'MATH101'], ['s4', 'CHEM120', 'MATH101H']],\n    {'MATH101': 60,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    540, 1080],\n   [['s4', 'MATH101', 'PHYS110', 615, True], ['s4', 'MATH101H', 'CHEM120', 645, True]]),\n  ('normal control 6',\n   [[['s5', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1020],\n   [['s5', 'CHEM120', 'HIST140', 1035, False], ['s3', 'BIO130', 'MATH101H', 975, False]]),\n  ('normal control 7',\n   [[['s4', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 60,\n     'HIST140': 180,\n     'ECON150': 180},\n    780, 1020],\n   [['s4', 'HIST140', 'PHYS110', 975, False]]),\n  ('normal control 8',\n   [[['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90, 'MATH101H': 60, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 60, 'HIST140': 60, 'ECON150': 60},\n    600, 1080],\n   [['s2', 'PHYS110', 'MATH101H', 705, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'CHEM120'], ['s3', 'CHEM120', 'ECON150'], ['s5', 'MATH101H', 'BIO130']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    540, 1080],\n   [['s5', 'CHEM120', 'MATH101', 675, True], ['s3', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'BIO130', 'MATH101H', 645, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'ECON150', 'HIST140'], ['s4', 'PHYS110', 'BIO130'], ['s2', 'MATH101H', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    780, 1020],\n   [['s3', 'HIST140', 'ECON150', 915, True], ['s4', 'PHYS110', 'BIO130', 975, False],\n    ['s2', 'HIST140', 'MATH101H', 915, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 5',\n   [[['s2', 'PHYS110', 'HIST140'], ['s5', 'BIO130', 'ECON150'], ['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'PHYS110', 'HIST140', 795, True], ['s5', 'ECON150', 'BIO130', 705, True],\n    ['s5', 'HIST140', 'MATH101', 675, True]]),\n  ('normal control 6',\n   [[['s4', 'BIO130', 'ECON150'], ['s1', 'BIO130', 'HIST140'], ['s5', 'PHYS110', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 60},\n    780, 1020],\n   [['s4', 'BIO130', 'ECON150', 885, True], ['s1', 'BIO130', 'HIST140', 885, True],\n    ['s5', 'PHYS110', 'MATH101', 915, True]]),\n  ('normal control 7',\n   [[['s2', 'MATH101H', 'ECON150'], ['s5', 'MATH101H', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'MATH101H', 'ECON150', 735, True], ['s5', 'CHEM120', 'MATH101H', 795, True]]),\n  ('normal control 8',\n   [[['s4', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'PHYS110', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1080],\n   [['s4', 'CHEM120', 'HIST140', 615, True], ['s3', 'MATH101H', 'ECON150', 645, True],\n    ['s2', 'PHYS110', 'CHEM120', 675, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s3', 'CHEM120', 'MATH101H'], ['s1', 'HIST140', 'PHYS110'], ['s3', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 180,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'CHEM120', 'MATH101H', 675, True], ['s1', 'HIST140', 'PHYS110', 735, True],\n    ['s3', 'HIST140', 'MATH101H', 735, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'HIST140', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    600, 1080],\n   [['s3', 'HIST140', 'CHEM120', 795, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('boundary control 5', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 6',\n   [[['s3', 'HIST140', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'BIO130', 'HIST140', 675, True]]),\n  ('normal control 7',\n   [[['s5', 'CHEM120', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1020],\n   [['s5', 'MATH101H', 'CHEM120', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'BIO130', 'HIST140'], ['s3', 'MATH101', 'MATH101H'], ['s2', 'CHEM120', 'HIST140']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    840, 1020],\n   [['s1', 'BIO130', 'HIST140', 915, True], ['s3', 'MATH101', 'MATH101H', 1035, False],\n    ['s2', 'CHEM120', 'HIST140', 915, True]])],\n [('regression: longer first 1', [[['s2', 'B', 'A']], {'A': 90, 'B': 120}, 540, 780],\n   [['s2', 'B', 'A', 675, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'PHYS110', 'HIST140'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'CHEM120', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 120},\n    840, 1080],\n   [['s5', 'PHYS110', 'HIST140', 1035, False], ['s3', 'ECON150', 'MATH101H', 975, True],\n    ['s2', 'MATH101', 'CHEM120', 1035, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'MATH101H', 'MATH101']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1080],\n   [['s2', 'MATH101H', 'MATH101', 975, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('normal control 6',\n   [[['s2', 'BIO130', 'PHYS110'], ['s4', 'ECON150', 'CHEM120'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 120,\n     'ECON150': 60},\n    540, 1020],\n   [['s2', 'PHYS110', 'BIO130', 645, True], ['s4', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'MATH101H', 'PHYS110', 735, True]]),\n  ('normal control 7',\n   [[['s3', 'CHEM120', 'ECON150']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 120},\n    840, 1020],\n   [['s3', 'CHEM120', 'ECON150', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 60},\n    600, 1080],\n   [['s1', 'HIST140', 'PHYS110', 735, True]])],\n [('regression: longer first 1', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 60},\n    600, 1020],\n   [['s5', 'HIST140', 'MATH101', 705, True]]),\n  ('partial repair guard 3',\n   [[['s2', 'ECON150', 'MATH101H'], ['s1', 'MATH101', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 90},\n    840, 1020],\n   [['s2', 'MATH101H', 'ECON150', 975, False], ['s1', 'MATH101', 'MATH101H', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('normal control 6',\n   [[['s1', 'CHEM120', 'ECON150'], ['s1', 'PHYS110', 'CHEM120'], ['s1', 'MATH101', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    840, 1020],\n   [['s1', 'ECON150', 'CHEM120', 1035, False], ['s1', 'CHEM120', 'PHYS110', 975, False],\n    ['s1', 'MATH101', 'CHEM120', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'MATH101', 'ECON150'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 60, 'MATH101H': 60, 'PHYS110': 60, 'CHEM120': 60, 'BIO130': 60, 'HIST140': 90, 'ECON150': 60},\n    840, 1080],\n   [['s5', 'ECON150', 'MATH101', 915, True], ['s5', 'MATH101H', 'PHYS110', 915, True]]),\n  ('normal control 8',\n   [[['s4', 'PHYS110', 'MATH101H'], ['s1', 'CHEM120', 'PHYS110'], ['s2', 'ECON150', 'BIO130']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'PHYS110', 'MATH101H', 675, True], ['s1', 'PHYS110', 'CHEM120', 675, True],\n    ['s2', 'BIO130', 'ECON150', 675, True]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"85ce38a7dada9c79abcfac9fdde2dc4f481560132b995a82f8c1c6a6f3ad38e9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clashes, dur, start, day_end):\n    out = []\n    for st, a, b in clashes:\n        first, second = sorted([a, b], key=lambda e: (dur[e], e))\n        s2 = start + dur[first] + 15\n        out.append([st, first, second, s2, s2 + dur[second] <= day_end])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 180}, 600, 1080],\n   [['s1', 'B', 'A', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1080],\n   [['s5', 'MATH101H', 'HIST140', 975, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 180},\n    840, 1080],\n   [['s2', 'MATH101', 'BIO130', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('normal control 5',\n   [[['s4', 'PHYS110', 'MATH101'], ['s4', 'CHEM120', 'MATH101H']],\n    {'MATH101': 60,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    540, 1080],\n   [['s4', 'MATH101', 'PHYS110', 615, True], ['s4', 'MATH101H', 'CHEM120', 645, True]]),\n  ('normal control 6',\n   [[['s5', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1020],\n   [['s5', 'CHEM120', 'HIST140', 1035, False], ['s3', 'BIO130', 'MATH101H', 975, False]]),\n  ('normal control 7',\n   [[['s4', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 60,\n     'HIST140': 180,\n     'ECON150': 180},\n    780, 1020],\n   [['s4', 'HIST140', 'PHYS110', 975, False]]),\n  ('normal control 8',\n   [[['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90, 'MATH101H': 60, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 60, 'HIST140': 60, 'ECON150': 60},\n    600, 1080],\n   [['s2', 'PHYS110', 'MATH101H', 705, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'CHEM120'], ['s3', 'CHEM120', 'ECON150'], ['s5', 'MATH101H', 'BIO130']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    540, 1080],\n   [['s5', 'CHEM120', 'MATH101', 675, True], ['s3', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'BIO130', 'MATH101H', 645, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'ECON150', 'HIST140'], ['s4', 'PHYS110', 'BIO130'], ['s2', 'MATH101H', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    780, 1020],\n   [['s3', 'HIST140', 'ECON150', 915, True], ['s4', 'PHYS110', 'BIO130', 975, False],\n    ['s2', 'HIST140', 'MATH101H', 915, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 5',\n   [[['s2', 'PHYS110', 'HIST140'], ['s5', 'BIO130', 'ECON150'], ['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'PHYS110', 'HIST140', 795, True], ['s5', 'ECON150', 'BIO130', 705, True],\n    ['s5', 'HIST140', 'MATH101', 675, True]]),\n  ('normal control 6',\n   [[['s4', 'BIO130', 'ECON150'], ['s1', 'BIO130', 'HIST140'], ['s5', 'PHYS110', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 60},\n    780, 1020],\n   [['s4', 'BIO130', 'ECON150', 885, True], ['s1', 'BIO130', 'HIST140', 885, True],\n    ['s5', 'PHYS110', 'MATH101', 915, True]]),\n  ('normal control 7',\n   [[['s2', 'MATH101H', 'ECON150'], ['s5', 'MATH101H', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'MATH101H', 'ECON150', 735, True], ['s5', 'CHEM120', 'MATH101H', 795, True]]),\n  ('normal control 8',\n   [[['s4', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'PHYS110', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1080],\n   [['s4', 'CHEM120', 'HIST140', 615, True], ['s3', 'MATH101H', 'ECON150', 645, True],\n    ['s2', 'PHYS110', 'CHEM120', 675, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s3', 'CHEM120', 'MATH101H'], ['s1', 'HIST140', 'PHYS110'], ['s3', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 180,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'CHEM120', 'MATH101H', 675, True], ['s1', 'HIST140', 'PHYS110', 735, True],\n    ['s3', 'HIST140', 'MATH101H', 735, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'HIST140', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    600, 1080],\n   [['s3', 'HIST140', 'CHEM120', 795, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('boundary control 5', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 6',\n   [[['s3', 'HIST140', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'BIO130', 'HIST140', 675, True]]),\n  ('normal control 7',\n   [[['s5', 'CHEM120', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1020],\n   [['s5', 'MATH101H', 'CHEM120', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'BIO130', 'HIST140'], ['s3', 'MATH101', 'MATH101H'], ['s2', 'CHEM120', 'HIST140']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    840, 1020],\n   [['s1', 'BIO130', 'HIST140', 915, True], ['s3', 'MATH101', 'MATH101H', 1035, False],\n    ['s2', 'CHEM120', 'HIST140', 915, True]])],\n [('regression: longer first 1', [[['s2', 'B', 'A']], {'A': 90, 'B': 120}, 540, 780],\n   [['s2', 'B', 'A', 675, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'PHYS110', 'HIST140'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'CHEM120', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 120},\n    840, 1080],\n   [['s5', 'PHYS110', 'HIST140', 1035, False], ['s3', 'ECON150', 'MATH101H', 975, True],\n    ['s2', 'MATH101', 'CHEM120', 1035, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'MATH101H', 'MATH101']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1080],\n   [['s2', 'MATH101H', 'MATH101', 975, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('normal control 6',\n   [[['s2', 'BIO130', 'PHYS110'], ['s4', 'ECON150', 'CHEM120'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 120,\n     'ECON150': 60},\n    540, 1020],\n   [['s2', 'PHYS110', 'BIO130', 645, True], ['s4', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'MATH101H', 'PHYS110', 735, True]]),\n  ('normal control 7',\n   [[['s3', 'CHEM120', 'ECON150']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 120},\n    840, 1020],\n   [['s3', 'CHEM120', 'ECON150', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 60},\n    600, 1080],\n   [['s1', 'HIST140', 'PHYS110', 735, True]])],\n [('regression: longer first 1', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 60},\n    600, 1020],\n   [['s5', 'HIST140', 'MATH101', 705, True]]),\n  ('partial repair guard 3',\n   [[['s2', 'ECON150', 'MATH101H'], ['s1', 'MATH101', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 90},\n    840, 1020],\n   [['s2', 'MATH101H', 'ECON150', 975, False], ['s1', 'MATH101', 'MATH101H', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('normal control 6',\n   [[['s1', 'CHEM120', 'ECON150'], ['s1', 'PHYS110', 'CHEM120'], ['s1', 'MATH101', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    840, 1020],\n   [['s1', 'ECON150', 'CHEM120', 1035, False], ['s1', 'CHEM120', 'PHYS110', 975, False],\n    ['s1', 'MATH101', 'CHEM120', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'MATH101', 'ECON150'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 60, 'MATH101H': 60, 'PHYS110': 60, 'CHEM120': 60, 'BIO130': 60, 'HIST140': 90, 'ECON150': 60},\n    840, 1080],\n   [['s5', 'ECON150', 'MATH101', 915, True], ['s5', 'MATH101H', 'PHYS110', 915, True]]),\n  ('normal control 8',\n   [[['s4', 'PHYS110', 'MATH101H'], ['s1', 'CHEM120', 'PHYS110'], ['s2', 'ECON150', 'BIO130']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'PHYS110', 'MATH101H', 675, True], ['s1', 'PHYS110', 'CHEM120', 675, True],\n    ['s2', 'BIO130', 'ECON150', 675, True]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"93506c0a9c4401332a5493ab3a242e7cbf26175a0dfc9ddaaa287afc4f446cc9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clashes, dur, start, day_end):\n    out = []\n    for st, a, b in clashes:\n        first, second = sorted([a, b], key=lambda e: (-dur[e], e))\n        s2 = start + dur[first] + 15\n        out.append([st, first, second, s2, s2 + dur[second] <= day_end])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 180}, 600, 1080],\n   [['s1', 'B', 'A', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1080],\n   [['s5', 'MATH101H', 'HIST140', 975, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 180},\n    840, 1080],\n   [['s2', 'MATH101', 'BIO130', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('normal control 5',\n   [[['s4', 'PHYS110', 'MATH101'], ['s4', 'CHEM120', 'MATH101H']],\n    {'MATH101': 60,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    540, 1080],\n   [['s4', 'MATH101', 'PHYS110', 615, True], ['s4', 'MATH101H', 'CHEM120', 645, True]]),\n  ('normal control 6',\n   [[['s5', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1020],\n   [['s5', 'CHEM120', 'HIST140', 1035, False], ['s3', 'BIO130', 'MATH101H', 975, False]]),\n  ('normal control 7',\n   [[['s4', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 60,\n     'HIST140': 180,\n     'ECON150': 180},\n    780, 1020],\n   [['s4', 'HIST140', 'PHYS110', 975, False]]),\n  ('normal control 8',\n   [[['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90, 'MATH101H': 60, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 60, 'HIST140': 60, 'ECON150': 60},\n    600, 1080],\n   [['s2', 'PHYS110', 'MATH101H', 705, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'CHEM120'], ['s3', 'CHEM120', 'ECON150'], ['s5', 'MATH101H', 'BIO130']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    540, 1080],\n   [['s5', 'CHEM120', 'MATH101', 675, True], ['s3', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'BIO130', 'MATH101H', 645, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'ECON150', 'HIST140'], ['s4', 'PHYS110', 'BIO130'], ['s2', 'MATH101H', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 90},\n    780, 1020],\n   [['s3', 'HIST140', 'ECON150', 915, True], ['s4', 'PHYS110', 'BIO130', 975, False],\n    ['s2', 'HIST140', 'MATH101H', 915, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 5',\n   [[['s2', 'PHYS110', 'HIST140'], ['s5', 'BIO130', 'ECON150'], ['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'PHYS110', 'HIST140', 795, True], ['s5', 'ECON150', 'BIO130', 705, True],\n    ['s5', 'HIST140', 'MATH101', 675, True]]),\n  ('normal control 6',\n   [[['s4', 'BIO130', 'ECON150'], ['s1', 'BIO130', 'HIST140'], ['s5', 'PHYS110', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 60},\n    780, 1020],\n   [['s4', 'BIO130', 'ECON150', 885, True], ['s1', 'BIO130', 'HIST140', 885, True],\n    ['s5', 'PHYS110', 'MATH101', 915, True]]),\n  ('normal control 7',\n   [[['s2', 'MATH101H', 'ECON150'], ['s5', 'MATH101H', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 90},\n    600, 1020],\n   [['s2', 'MATH101H', 'ECON150', 735, True], ['s5', 'CHEM120', 'MATH101H', 795, True]]),\n  ('normal control 8',\n   [[['s4', 'HIST140', 'CHEM120'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'PHYS110', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1080],\n   [['s4', 'CHEM120', 'HIST140', 615, True], ['s3', 'MATH101H', 'ECON150', 645, True],\n    ['s2', 'PHYS110', 'CHEM120', 675, True]])],\n [('regression: longer first 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: longer first 2',\n   [[['s3', 'CHEM120', 'MATH101H'], ['s1', 'HIST140', 'PHYS110'], ['s3', 'HIST140', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 120,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 180,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'CHEM120', 'MATH101H', 675, True], ['s1', 'HIST140', 'PHYS110', 735, True],\n    ['s3', 'HIST140', 'MATH101H', 735, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'HIST140', 'CHEM120']],\n    {'MATH101': 120,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    600, 1080],\n   [['s3', 'HIST140', 'CHEM120', 795, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('boundary control 5', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 6',\n   [[['s3', 'HIST140', 'BIO130']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 180},\n    540, 1020],\n   [['s3', 'BIO130', 'HIST140', 675, True]]),\n  ('normal control 7',\n   [[['s5', 'CHEM120', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1020],\n   [['s5', 'MATH101H', 'CHEM120', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'BIO130', 'HIST140'], ['s3', 'MATH101', 'MATH101H'], ['s2', 'CHEM120', 'HIST140']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 60},\n    840, 1020],\n   [['s1', 'BIO130', 'HIST140', 915, True], ['s3', 'MATH101', 'MATH101H', 1035, False],\n    ['s2', 'CHEM120', 'HIST140', 915, True]])],\n [('regression: longer first 1', [[['s2', 'B', 'A']], {'A': 90, 'B': 120}, 540, 780],\n   [['s2', 'B', 'A', 675, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'PHYS110', 'HIST140'], ['s3', 'MATH101H', 'ECON150'], ['s2', 'CHEM120', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 120},\n    840, 1080],\n   [['s5', 'PHYS110', 'HIST140', 1035, False], ['s3', 'ECON150', 'MATH101H', 975, True],\n    ['s2', 'MATH101', 'CHEM120', 1035, False]]),\n  ('partial repair guard 3',\n   [[['s2', 'MATH101H', 'MATH101']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 90,\n     'ECON150': 90},\n    840, 1080],\n   [['s2', 'MATH101H', 'MATH101', 975, True]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855], [['s1', 'A', 'B', 735, True]]),\n  ('normal control 6',\n   [[['s2', 'BIO130', 'PHYS110'], ['s4', 'ECON150', 'CHEM120'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 120,\n     'ECON150': 60},\n    540, 1020],\n   [['s2', 'PHYS110', 'BIO130', 645, True], ['s4', 'CHEM120', 'ECON150', 675, True],\n    ['s5', 'MATH101H', 'PHYS110', 735, True]]),\n  ('normal control 7',\n   [[['s3', 'CHEM120', 'ECON150']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 60,\n     'ECON150': 120},\n    840, 1020],\n   [['s3', 'CHEM120', 'ECON150', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'HIST140', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 120,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 60},\n    600, 1080],\n   [['s1', 'HIST140', 'PHYS110', 735, True]])],\n [('regression: longer first 1', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('regression variant: longer first 2',\n   [[['s5', 'MATH101', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 60},\n    600, 1020],\n   [['s5', 'HIST140', 'MATH101', 705, True]]),\n  ('partial repair guard 3',\n   [[['s2', 'ECON150', 'MATH101H'], ['s1', 'MATH101', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 90},\n    840, 1020],\n   [['s2', 'MATH101H', 'ECON150', 975, False], ['s1', 'MATH101', 'MATH101H', 1035, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855], [['s1', 'A', 'B', 795, True]]),\n  ('normal control 6',\n   [[['s1', 'CHEM120', 'ECON150'], ['s1', 'PHYS110', 'CHEM120'], ['s1', 'MATH101', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 180},\n    840, 1020],\n   [['s1', 'ECON150', 'CHEM120', 1035, False], ['s1', 'CHEM120', 'PHYS110', 975, False],\n    ['s1', 'MATH101', 'CHEM120', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'MATH101', 'ECON150'], ['s5', 'PHYS110', 'MATH101H']],\n    {'MATH101': 60, 'MATH101H': 60, 'PHYS110': 60, 'CHEM120': 60, 'BIO130': 60, 'HIST140': 90, 'ECON150': 60},\n    840, 1080],\n   [['s5', 'ECON150', 'MATH101', 915, True], ['s5', 'MATH101H', 'PHYS110', 915, True]]),\n  ('normal control 8',\n   [[['s4', 'PHYS110', 'MATH101H'], ['s1', 'CHEM120', 'PHYS110'], ['s2', 'ECON150', 'BIO130']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'PHYS110', 'MATH101H', 675, True], ['s1', 'PHYS110', 'CHEM120', 675, True],\n    ['s2', 'BIO130', 'ECON150', 675, True]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-exam-timetabling-constraints-clash-sequential-sitting-longer-first","generated_at":"2026-09-29T14:52:06.518439+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Clash resolution by supervised sequential sitting is a standard timetabling fallback.","repair":"Sit the longer exam first, ties by id.","root_cause":"The sitting order sorts by ascending duration.","sha256":"7b6ce562992661ce6c7942600657baf2c3932aae66f88ff2e9b85b00944a6f5a","title":"Shorter clashing exam sat first · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.282,"exit_code":1,"observations":[{"actual":[["s1","A","B",735,true]],"check":"regression: longer first 1","expected":[["s1","B","A",795,true]],"passed":false},{"actual":[["s5","HIST140","MATH101H",915,false]],"check":"regression variant: longer first 2","expected":[["s5","MATH101H","HIST140",975,false]],"passed":false},{"actual":[["s2","BIO130","MATH101",945,false]],"check":"partial repair guard 3","expected":[["s2","MATH101","BIO130",1035,false]],"passed":false},{"actual":[["s1","A","B",1035,false]],"check":"boundary control 4","expected":[["s1","A","B",1035,false]],"passed":true},{"actual":[["s4","MATH101","PHYS110",615,true],["s4","CHEM120","MATH101H",615,true]],"check":"normal control 5","expected":[["s4","MATH101","PHYS110",615,true],["s4","MATH101H","CHEM120",645,true]],"passed":false},{"actual":[["s5","CHEM120","HIST140",1035,false],["s3","BIO130","MATH101H",975,false]],"check":"normal control 6","expected":[["s5","CHEM120","HIST140",1035,false],["s3","BIO130","MATH101H",975,false]],"passed":true},{"actual":[["s4","HIST140","PHYS110",975,false]],"check":"normal control 7","expected":[["s4","HIST140","PHYS110",975,false]],"passed":true},{"actual":[["s2","MATH101H","PHYS110",675,true]],"check":"normal control 8","expected":[["s2","PHYS110","MATH101H",705,true]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: longer first 1\", \"actual\": [[\"s1\", \"A\", \"B\", 735, true]], \"expected\": [[\"s1\", \"B\", \"A\", 795, true]], \"passed\": false}, {\"check\": \"regression variant: longer first 2\", \"actual\": [[\"s5\", \"HIST140\", \"MATH101H\", 915, false]], \"expected\": [[\"s5\", \"MATH101H\", \"HIST140\", 975, false]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s2\", \"BIO130\", \"MATH101\", 945, false]], \"expected\": [[\"s2\", \"MATH101\", \"BIO130\", 1035, false]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", \"A\", \"B\", 1035, false]], \"expected\": [[\"s1\", \"A\", \"B\", 1035, false]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"CHEM120\", \"MATH101H\", 615, true]], \"expected\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"MATH101H\", \"CHEM120\", 645, true]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"s5\", \"CHEM120\", \"HIST140\", 1035, false], [\"s3\", \"BIO130\", \"MATH101H\", 975, false]], \"expected\": [[\"s5\", \"CHEM120\", \"HIST140\", 1035, false], [\"s3\", \"BIO130\", \"MATH101H\", 975, false]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s4\", \"HIST140\", \"PHYS110\", 975, false]], \"expected\": [[\"s4\", \"HIST140\", \"PHYS110\", 975, false]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"s2\", \"MATH101H\", \"PHYS110\", 675, true]], \"expected\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.642,"exit_code":1,"observations":[{"actual":[["s1","A","B",735,true]],"check":"regression: longer first 1","expected":[["s1","B","A",795,true]],"passed":false},{"actual":[["s5","HIST140","MATH101H",915,false]],"check":"regression variant: longer first 2","expected":[["s5","MATH101H","HIST140",975,false]],"passed":false},{"actual":[["s2","BIO130","MATH101",945,false]],"check":"partial repair guard 3","expected":[["s2","MATH101","BIO130",1035,false]],"passed":false},{"actual":[["s1","B","A",915,false]],"check":"boundary control 4","expected":[["s1","A","B",1035,false]],"passed":false},{"actual":[["s4","MATH101","PHYS110",615,true],["s4","CHEM120","MATH101H",615,true]],"check":"normal control 5","expected":[["s4","MATH101","PHYS110",615,true],["s4","MATH101H","CHEM120",645,true]],"passed":false},{"actual":[["s5","HIST140","CHEM120",945,false],["s3","MATH101H","BIO130",945,false]],"check":"normal control 6","expected":[["s5","CHEM120","HIST140",1035,false],["s3","BIO130","MATH101H",975,false]],"passed":false},{"actual":[["s4","PHYS110","HIST140",885,false]],"check":"normal control 7","expected":[["s4","HIST140","PHYS110",975,false]],"passed":false},{"actual":[["s2","MATH101H","PHYS110",675,true]],"check":"normal control 8","expected":[["s2","PHYS110","MATH101H",705,true]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: longer first 1\", \"actual\": [[\"s1\", \"A\", \"B\", 735, true]], \"expected\": [[\"s1\", \"B\", \"A\", 795, true]], \"passed\": false}, {\"check\": \"regression variant: longer first 2\", \"actual\": [[\"s5\", \"HIST140\", \"MATH101H\", 915, false]], \"expected\": [[\"s5\", \"MATH101H\", \"HIST140\", 975, false]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s2\", \"BIO130\", \"MATH101\", 945, false]], \"expected\": [[\"s2\", \"MATH101\", \"BIO130\", 1035, false]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", \"B\", \"A\", 915, false]], \"expected\": [[\"s1\", \"A\", \"B\", 1035, false]], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"CHEM120\", \"MATH101H\", 615, true]], \"expected\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"MATH101H\", \"CHEM120\", 645, true]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"s5\", \"HIST140\", \"CHEM120\", 945, false], [\"s3\", \"MATH101H\", \"BIO130\", 945, false]], \"expected\": [[\"s5\", \"CHEM120\", \"HIST140\", 1035, false], [\"s3\", \"BIO130\", \"MATH101H\", 975, false]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"s4\", \"PHYS110\", \"HIST140\", 885, false]], \"expected\": [[\"s4\", \"HIST140\", \"PHYS110\", 975, false]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"s2\", \"MATH101H\", \"PHYS110\", 675, true]], \"expected\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.713,"exit_code":0,"observations":[{"actual":[["s1","B","A",795,true]],"check":"regression: longer first 1","expected":[["s1","B","A",795,true]],"passed":true},{"actual":[["s5","MATH101H","HIST140",975,false]],"check":"regression variant: longer first 2","expected":[["s5","MATH101H","HIST140",975,false]],"passed":true},{"actual":[["s2","MATH101","BIO130",1035,false]],"check":"partial repair guard 3","expected":[["s2","MATH101","BIO130",1035,false]],"passed":true},{"actual":[["s1","A","B",1035,false]],"check":"boundary control 4","expected":[["s1","A","B",1035,false]],"passed":true},{"actual":[["s4","MATH101","PHYS110",615,true],["s4","MATH101H","CHEM120",645,true]],"check":"normal control 5","expected":[["s4","MATH101","PHYS110",615,true],["s4","MATH101H","CHEM120",645,true]],"passed":true},{"actual":[["s5","CHEM120","HIST140",1035,false],["s3","BIO130","MATH101H",975,false]],"check":"normal control 6","expected":[["s5","CHEM120","HIST140",1035,false],["s3","BIO130","MATH101H",975,false]],"passed":true},{"actual":[["s4","HIST140","PHYS110",975,false]],"check":"normal control 7","expected":[["s4","HIST140","PHYS110",975,false]],"passed":true},{"actual":[["s2","PHYS110","MATH101H",705,true]],"check":"normal control 8","expected":[["s2","PHYS110","MATH101H",705,true]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: longer first 1\", \"actual\": [[\"s1\", \"B\", \"A\", 795, true]], \"expected\": [[\"s1\", \"B\", \"A\", 795, true]], \"passed\": true}, {\"check\": \"regression variant: longer first 2\", \"actual\": [[\"s5\", \"MATH101H\", \"HIST140\", 975, false]], \"expected\": [[\"s5\", \"MATH101H\", \"HIST140\", 975, false]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s2\", \"MATH101\", \"BIO130\", 1035, false]], \"expected\": [[\"s2\", \"MATH101\", \"BIO130\", 1035, false]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", \"A\", \"B\", 1035, false]], \"expected\": [[\"s1\", \"A\", \"B\", 1035, false]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"MATH101H\", \"CHEM120\", 645, true]], \"expected\": [[\"s4\", \"MATH101\", \"PHYS110\", 615, true], [\"s4\", \"MATH101H\", \"CHEM120\", 645, true]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"s5\", \"CHEM120\", \"HIST140\", 1035, false], [\"s3\", \"BIO130\", \"MATH101H\", 975, false]], \"expected\": [[\"s5\", \"CHEM120\", \"HIST140\", 1035, false], [\"s3\", \"BIO130\", \"MATH101H\", 975, false]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s4\", \"HIST140\", \"PHYS110\", 975, false]], \"expected\": [[\"s4\", \"HIST140\", \"PHYS110\", 975, false]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"expected\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}