{"abstract":"Small exams occupy large halls and later large exams must split or go unplaced.","category":"Exam timetabling constraints","checks":8,"contract":"exams [id, size, duration, splittable], rooms [id, capacity]. Exams are placed largest first (ties by id). A room is compatible if empty or holding only exams of the same duration. Place whole in the compatible room with the least sufficient remaining capacity (ties by id); else if splittable and compatible rooms have enough total space, fill them by descending remaining capacity (ties by id), skipping full rooms; else unplaced. Return placements and unplaced ids.","evaluation_group":"w2-exam-timetabling-constraints-room-allocation-with-splitting","failed_approach":"Choosing the largest room is worst fit.","family":"w2-exam-timetabling-constraints-room-allocation-with-splitting-best-fit-room","id":"FA-94391","implementations":{"attempt":{"sha256":"548c361be10e7e50721f65007640d6ccb84b07d46ee61e88667954a878ba93a4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if dur.get(r, d) == d]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = max(fit, key=lambda r: (rem[r], r))\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: best fit room 1', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('regression variant: best fit room 2',\n   [[['E0', 80, 90, True], ['E1', 20, 120, True]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 20]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('normal control 4',\n   [[['E0', 10, 90, True], ['E1', 60, 180, False], ['E2', 10, 120, True], ['E3', 10, 180, False],\n     ['E4', 10, 120, False]],\n    [['R0', 40], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 10]], 'E2': [['R0', 10]], 'E3': [['R1', 10]], 'E4': [['R0', 10]]},\n    'unplaced': ['E1']}),\n  ('normal control 5',\n   [[['E0', 30, 120, True], ['E1', 20, 120, True], ['E2', 10, 180, False], ['E3', 60, 120, False]],\n    [['R0', 20], ['R1', 60], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E3': [['R1', 60]], 'E0': [['R3', 30]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 10, 180, False], ['E1', 20, 120, False], ['E2', 45, 120, False]],\n    [['R0', 30], ['R1', 20], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 20]], 'E0': [['R0', 10]]}, 'unplaced': ['E2']}),\n  ('normal control 7', [[['E0', 10, 180, True], ['E1', 60, 180, True]], [['R0', 40], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E1': [['R0', 40], ['R1', 20]], 'E0': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 8', [[['E0', 10, 120, False], ['E1', 60, 120, True]], [['R0', 30], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 30], ['R1', 30]]}, 'unplaced': ['E0']})],\n [('regression: best fit room 1',\n   [[['E0', 80, 120, False], ['E1', 10, 120, False]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 50], ['R1', 30], ['R2', 30], ['R3', 20]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 30, 120, False], ['E1', 20, 120, True], ['E2', 45, 180, True], ['E3', 80, 120, True]],\n    [['R0', 60], ['R1', 60], ['R2', 40]]],\n   {'placed': {'E3': [['R0', 60], ['R1', 20]], 'E0': [['R1', 30]], 'E1': [['R2', 20]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 80, 120, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 80, 180, True],\n     ['E4', 60, 90, True]],\n    [['R0', 50], ['R1', 50]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 20]]}, 'unplaced': ['E3', 'E4', 'E2']}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 20, 180, True], ['E2', 60, 90, False]], [['R0', 30], ['R1', 50]]],\n   {'placed': {'E0': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, False], ['E1', 10, 120, True]], [['R0', 20], ['R1', 30], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 80, 120, True], ['E1', 10, 120, False], ['E2', 60, 120, True]],\n    [['R0', 50], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 60, 120, False]], [['R0', 40], ['R1', 20], ['R2', 20]]],\n   {'placed': {'E0': [['R1', 20]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 45, 120, False], ['E1', 60, 180, True]], [['R0', 40], ['R1', 50], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 10]]}, 'unplaced': ['E0']}),\n  ('normal control 8',\n   [[['E0', 30, 120, False], ['E1', 80, 120, True], ['E2', 80, 90, True], ['E3', 45, 120, True],\n     ['E4', 80, 120, False]],\n    [['R0', 50], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E4', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 10, 120, True], ['E1', 80, 120, False]], [['R0', 60], ['R1', 40], ['R2', 40]]],\n   {'placed': {'E0': [['R1', 10]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 40], ['R1', 30], ['R2', 40], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, False], ['E1', 10, 90, True], ['E2', 60, 120, True], ['E3', 10, 90, False]],\n    [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 10]], 'E3': [['R1', 10]]}, 'unplaced': ['E0', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 30, 180, True], ['E1', 60, 120, False], ['E2', 30, 180, False], ['E3', 20, 180, False]],\n    [['R0', 20], ['R1', 40], ['R2', 60], ['R3', 60]]],\n   {'placed': {'E1': [['R2', 60]], 'E0': [['R1', 30]], 'E2': [['R3', 30]], 'E3': [['R0', 20]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 30, 180, False], ['E1', 45, 180, False], ['E2', 60, 90, True]], [['R0', 40], ['R1', 40]]],\n   {'placed': {'E2': [['R0', 40], ['R1', 20]]}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 30, 120, False], ['E2', 60, 180, True]],\n    [['R0', 60], ['R1', 50], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 60]], 'E2': [['R2', 60]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 30, 120, True], ['E1', 60, 90, True], ['E2', 80, 120, True], ['E3', 45, 120, True]],\n    [['R0', 20], ['R1', 20], ['R2', 30]]],\n   {'placed': {'E1': [['R2', 30], ['R0', 20], ['R1', 10]]}, 'unplaced': ['E2', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 90, True], ['E1', 80, 120, False]], [['R0', 30], ['R1', 30], ['R2', 20], ['R3', 60]]],\n   {'placed': {'E0': [['R2', 20]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 80, 120, False], ['E3', 60, 120, True],\n     ['E4', 20, 120, True]],\n    [['R0', 50], ['R1', 20], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E3': [['R0', 50], ['R2', 10]], 'E1': [['R1', 20]], 'E4': [['R3', 20]]},\n    'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 30, 120, True], ['E1', 30, 90, True]], [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5',\n   [[['E0', 45, 180, True], ['E1', 80, 90, True], ['E2', 80, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 90, True]],\n    [['R0', 30], ['R1', 50], ['R2', 20]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 30]], 'E3': [['R2', 10]]}, 'unplaced': ['E2', 'E0', 'E4']}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('normal control 7',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 80, 90, True], ['E2', 60, 120, True], ['E3', 60, 180, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60], ['R3', 50]]],\n   {'placed': {'E0': [['R0', 60], ['R2', 20]], 'E1': [['R3', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E3']})]]\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":"9cb0cb5754e9793ea1d3d3124605c69d31525e958421973460dadac74d53934e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if dur.get(r, d) == d]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = fit[0]\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: best fit room 1', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('regression variant: best fit room 2',\n   [[['E0', 80, 90, True], ['E1', 20, 120, True]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 20]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('normal control 4',\n   [[['E0', 10, 90, True], ['E1', 60, 180, False], ['E2', 10, 120, True], ['E3', 10, 180, False],\n     ['E4', 10, 120, False]],\n    [['R0', 40], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 10]], 'E2': [['R0', 10]], 'E3': [['R1', 10]], 'E4': [['R0', 10]]},\n    'unplaced': ['E1']}),\n  ('normal control 5',\n   [[['E0', 30, 120, True], ['E1', 20, 120, True], ['E2', 10, 180, False], ['E3', 60, 120, False]],\n    [['R0', 20], ['R1', 60], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E3': [['R1', 60]], 'E0': [['R3', 30]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 10, 180, False], ['E1', 20, 120, False], ['E2', 45, 120, False]],\n    [['R0', 30], ['R1', 20], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 20]], 'E0': [['R0', 10]]}, 'unplaced': ['E2']}),\n  ('normal control 7', [[['E0', 10, 180, True], ['E1', 60, 180, True]], [['R0', 40], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E1': [['R0', 40], ['R1', 20]], 'E0': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 8', [[['E0', 10, 120, False], ['E1', 60, 120, True]], [['R0', 30], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 30], ['R1', 30]]}, 'unplaced': ['E0']})],\n [('regression: best fit room 1',\n   [[['E0', 80, 120, False], ['E1', 10, 120, False]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 50], ['R1', 30], ['R2', 30], ['R3', 20]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 30, 120, False], ['E1', 20, 120, True], ['E2', 45, 180, True], ['E3', 80, 120, True]],\n    [['R0', 60], ['R1', 60], ['R2', 40]]],\n   {'placed': {'E3': [['R0', 60], ['R1', 20]], 'E0': [['R1', 30]], 'E1': [['R2', 20]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 80, 120, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 80, 180, True],\n     ['E4', 60, 90, True]],\n    [['R0', 50], ['R1', 50]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 20]]}, 'unplaced': ['E3', 'E4', 'E2']}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 20, 180, True], ['E2', 60, 90, False]], [['R0', 30], ['R1', 50]]],\n   {'placed': {'E0': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, False], ['E1', 10, 120, True]], [['R0', 20], ['R1', 30], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 80, 120, True], ['E1', 10, 120, False], ['E2', 60, 120, True]],\n    [['R0', 50], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 60, 120, False]], [['R0', 40], ['R1', 20], ['R2', 20]]],\n   {'placed': {'E0': [['R1', 20]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 45, 120, False], ['E1', 60, 180, True]], [['R0', 40], ['R1', 50], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 10]]}, 'unplaced': ['E0']}),\n  ('normal control 8',\n   [[['E0', 30, 120, False], ['E1', 80, 120, True], ['E2', 80, 90, True], ['E3', 45, 120, True],\n     ['E4', 80, 120, False]],\n    [['R0', 50], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E4', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 10, 120, True], ['E1', 80, 120, False]], [['R0', 60], ['R1', 40], ['R2', 40]]],\n   {'placed': {'E0': [['R1', 10]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 40], ['R1', 30], ['R2', 40], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, False], ['E1', 10, 90, True], ['E2', 60, 120, True], ['E3', 10, 90, False]],\n    [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 10]], 'E3': [['R1', 10]]}, 'unplaced': ['E0', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 30, 180, True], ['E1', 60, 120, False], ['E2', 30, 180, False], ['E3', 20, 180, False]],\n    [['R0', 20], ['R1', 40], ['R2', 60], ['R3', 60]]],\n   {'placed': {'E1': [['R2', 60]], 'E0': [['R1', 30]], 'E2': [['R3', 30]], 'E3': [['R0', 20]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 30, 180, False], ['E1', 45, 180, False], ['E2', 60, 90, True]], [['R0', 40], ['R1', 40]]],\n   {'placed': {'E2': [['R0', 40], ['R1', 20]]}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 30, 120, False], ['E2', 60, 180, True]],\n    [['R0', 60], ['R1', 50], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 60]], 'E2': [['R2', 60]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 30, 120, True], ['E1', 60, 90, True], ['E2', 80, 120, True], ['E3', 45, 120, True]],\n    [['R0', 20], ['R1', 20], ['R2', 30]]],\n   {'placed': {'E1': [['R2', 30], ['R0', 20], ['R1', 10]]}, 'unplaced': ['E2', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 90, True], ['E1', 80, 120, False]], [['R0', 30], ['R1', 30], ['R2', 20], ['R3', 60]]],\n   {'placed': {'E0': [['R2', 20]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 80, 120, False], ['E3', 60, 120, True],\n     ['E4', 20, 120, True]],\n    [['R0', 50], ['R1', 20], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E3': [['R0', 50], ['R2', 10]], 'E1': [['R1', 20]], 'E4': [['R3', 20]]},\n    'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 30, 120, True], ['E1', 30, 90, True]], [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5',\n   [[['E0', 45, 180, True], ['E1', 80, 90, True], ['E2', 80, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 90, True]],\n    [['R0', 30], ['R1', 50], ['R2', 20]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 30]], 'E3': [['R2', 10]]}, 'unplaced': ['E2', 'E0', 'E4']}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('normal control 7',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 80, 90, True], ['E2', 60, 120, True], ['E3', 60, 180, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60], ['R3', 50]]],\n   {'placed': {'E0': [['R0', 60], ['R2', 20]], 'E1': [['R3', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E3']})]]\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":"1f59a0f8cb82c6b3226ca451ac8e09da651a58425afd1429f214212c2329f31d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if dur.get(r, d) == d]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = min(fit, key=lambda r: (rem[r], r))\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: best fit room 1', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('regression variant: best fit room 2',\n   [[['E0', 80, 90, True], ['E1', 20, 120, True]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 20]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('normal control 4',\n   [[['E0', 10, 90, True], ['E1', 60, 180, False], ['E2', 10, 120, True], ['E3', 10, 180, False],\n     ['E4', 10, 120, False]],\n    [['R0', 40], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 10]], 'E2': [['R0', 10]], 'E3': [['R1', 10]], 'E4': [['R0', 10]]},\n    'unplaced': ['E1']}),\n  ('normal control 5',\n   [[['E0', 30, 120, True], ['E1', 20, 120, True], ['E2', 10, 180, False], ['E3', 60, 120, False]],\n    [['R0', 20], ['R1', 60], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E3': [['R1', 60]], 'E0': [['R3', 30]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 10, 180, False], ['E1', 20, 120, False], ['E2', 45, 120, False]],\n    [['R0', 30], ['R1', 20], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 20]], 'E0': [['R0', 10]]}, 'unplaced': ['E2']}),\n  ('normal control 7', [[['E0', 10, 180, True], ['E1', 60, 180, True]], [['R0', 40], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E1': [['R0', 40], ['R1', 20]], 'E0': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 8', [[['E0', 10, 120, False], ['E1', 60, 120, True]], [['R0', 30], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 30], ['R1', 30]]}, 'unplaced': ['E0']})],\n [('regression: best fit room 1',\n   [[['E0', 80, 120, False], ['E1', 10, 120, False]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 50], ['R1', 30], ['R2', 30], ['R3', 20]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 30, 120, False], ['E1', 20, 120, True], ['E2', 45, 180, True], ['E3', 80, 120, True]],\n    [['R0', 60], ['R1', 60], ['R2', 40]]],\n   {'placed': {'E3': [['R0', 60], ['R1', 20]], 'E0': [['R1', 30]], 'E1': [['R2', 20]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 80, 120, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 80, 180, True],\n     ['E4', 60, 90, True]],\n    [['R0', 50], ['R1', 50]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 20]]}, 'unplaced': ['E3', 'E4', 'E2']}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 20, 180, True], ['E2', 60, 90, False]], [['R0', 30], ['R1', 50]]],\n   {'placed': {'E0': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, False], ['E1', 10, 120, True]], [['R0', 20], ['R1', 30], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 80, 120, True], ['E1', 10, 120, False], ['E2', 60, 120, True]],\n    [['R0', 50], ['R1', 40], ['R2', 30]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 30]], 'E1': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 60, 120, False]], [['R0', 40], ['R1', 20], ['R2', 20]]],\n   {'placed': {'E0': [['R1', 20]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 45, 120, False], ['E1', 60, 180, True]], [['R0', 40], ['R1', 50], ['R2', 40]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 10]]}, 'unplaced': ['E0']}),\n  ('normal control 8',\n   [[['E0', 30, 120, False], ['E1', 80, 120, True], ['E2', 80, 90, True], ['E3', 45, 120, True],\n     ['E4', 80, 120, False]],\n    [['R0', 50], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E4', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 10, 120, True], ['E1', 80, 120, False]], [['R0', 60], ['R1', 40], ['R2', 40]]],\n   {'placed': {'E0': [['R1', 10]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 20, 120, True], ['E1', 30, 120, True]], [['R0', 40], ['R1', 30], ['R2', 40], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 30]], 'E0': [['R3', 20]]}, 'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 60, 180, False], ['E1', 10, 90, True], ['E2', 60, 120, True], ['E3', 10, 90, False]],\n    [['R0', 30], ['R1', 20]]],\n   {'placed': {'E1': [['R1', 10]], 'E3': [['R1', 10]]}, 'unplaced': ['E0', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 30, 180, True], ['E1', 60, 120, False], ['E2', 30, 180, False], ['E3', 20, 180, False]],\n    [['R0', 20], ['R1', 40], ['R2', 60], ['R3', 60]]],\n   {'placed': {'E1': [['R2', 60]], 'E0': [['R1', 30]], 'E2': [['R3', 30]], 'E3': [['R0', 20]]},\n    'unplaced': []}),\n  ('normal control 6',\n   [[['E0', 30, 180, False], ['E1', 45, 180, False], ['E2', 60, 90, True]], [['R0', 40], ['R1', 40]]],\n   {'placed': {'E2': [['R0', 40], ['R1', 20]]}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 30, 120, False], ['E2', 60, 180, True]],\n    [['R0', 60], ['R1', 50], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 60]], 'E2': [['R2', 60]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 30, 120, True], ['E1', 60, 90, True], ['E2', 80, 120, True], ['E3', 45, 120, True]],\n    [['R0', 20], ['R1', 20], ['R2', 30]]],\n   {'placed': {'E1': [['R2', 30], ['R0', 20], ['R1', 10]]}, 'unplaced': ['E2', 'E3', 'E0']})],\n [('regression: best fit room 1',\n   [[['E0', 20, 90, True], ['E1', 80, 120, False]], [['R0', 30], ['R1', 30], ['R2', 20], ['R3', 60]]],\n   {'placed': {'E0': [['R2', 20]]}, 'unplaced': ['E1']}),\n  ('regression variant: best fit room 2',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 80, 120, False], ['E3', 60, 120, True],\n     ['E4', 20, 120, True]],\n    [['R0', 50], ['R1', 20], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E3': [['R0', 50], ['R2', 10]], 'E1': [['R1', 20]], 'E4': [['R3', 20]]},\n    'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 30, 120, True], ['E1', 30, 90, True]], [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 30]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5',\n   [[['E0', 45, 180, True], ['E1', 80, 90, True], ['E2', 80, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 90, True]],\n    [['R0', 30], ['R1', 50], ['R2', 20]]],\n   {'placed': {'E1': [['R1', 50], ['R0', 30]], 'E3': [['R2', 10]]}, 'unplaced': ['E2', 'E0', 'E4']}),\n  ('normal control 6',\n   [[['E0', 20, 120, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 80, 120, False],\n     ['E4', 80, 120, False]],\n    [['R0', 40], ['R1', 50], ['R2', 30]]],\n   {'placed': {'E0': [['R2', 20]], 'E1': [['R0', 20]], 'E2': [['R2', 10]]}, 'unplaced': ['E3', 'E4']}),\n  ('normal control 7',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 120, True], ['E1', 80, 90, True], ['E2', 60, 120, True], ['E3', 60, 180, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60], ['R3', 50]]],\n   {'placed': {'E0': [['R0', 60], ['R2', 20]], 'E1': [['R3', 50], ['R1', 30]]}, 'unplaced': ['E2', 'E3']})]]\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-room-allocation-with-splitting-best-fit-room","generated_at":"2026-09-29T14:52:03.937448+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Room allocation rules (mixed durations, best fit, splitting) are the second hard-constraint family of exam timetabling.","repair":"Choose the fitting room with the least remaining capacity, ties by id.","root_cause":"The first fitting room is used instead of the tightest fit.","sha256":"9e58d36a86959d672853ea9dc4fe9ff0beeca05b615a654090a2802163f78fa7","title":"Whole exam placed in the first sufficient room · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.657,"exit_code":1,"observations":[{"actual":{"placed":{"A":[["R1",40]],"B":[["R2",20]]},"unplaced":[]},"check":"regression: best fit room 1","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":false},{"actual":{"placed":{"E1":[["R0",20]]},"unplaced":["E0"]},"check":"regression variant: best fit room 2","expected":{"placed":{"E1":[["R1",20]]},"unplaced":["E0"]},"passed":false},{"actual":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R3",20]]},"unplaced":["E2","E3"]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R2",20]]},"unplaced":["E2","E3"]},"passed":false},{"actual":{"placed":{"E0":[["R1",10]],"E2":[["R0",10]],"E3":[["R2",10]],"E4":[["R0",10]]},"unplaced":["E1"]},"check":"normal control 4","expected":{"placed":{"E0":[["R2",10]],"E2":[["R0",10]],"E3":[["R1",10]],"E4":[["R0",10]]},"unplaced":["E1"]},"passed":false},{"actual":{"placed":{"E0":[["R3",30]],"E1":[["R3",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R3",30]],"E1":[["R0",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"passed":false},{"actual":{"placed":{"E0":[["R0",10]],"E1":[["R2",20]]},"unplaced":["E2"]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",10]],"E1":[["R1",20]]},"unplaced":["E2"]},"passed":false},{"actual":{"placed":{"E0":[["R2",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"passed":false},{"actual":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: best fit room 1\", \"actual\": {\"placed\": {\"A\": [[\"R1\", 40]], \"B\": [[\"R2\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": false}, {\"check\": \"regression variant: best fit room 2\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\"]}, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R3\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R2\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"passed\": false}, {\"check\": \"normal control 4\", \"actual\": {\"placed\": {\"E0\": [[\"R1\", 10]], \"E2\": [[\"R0\", 10]], \"E3\": [[\"R2\", 10]], \"E4\": [[\"R0\", 10]]}, \"unplaced\": [\"E1\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R2\", 10]], \"E2\": [[\"R0\", 10]], \"E3\": [[\"R1\", 10]], \"E4\": [[\"R0\", 10]]}, \"unplaced\": [\"E1\"]}, \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R3\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R0\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R2\", 20]], \"E0\": [[\"R0\", 10]]}, \"unplaced\": [\"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]], \"E0\": [[\"R0\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R2\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.144,"exit_code":1,"observations":[{"actual":{"placed":{"A":[["R1",40]],"B":[["R1",20]]},"unplaced":[]},"check":"regression: best fit room 1","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":false},{"actual":{"placed":{"E1":[["R0",20]]},"unplaced":["E0"]},"check":"regression variant: best fit room 2","expected":{"placed":{"E1":[["R1",20]]},"unplaced":["E0"]},"passed":false},{"actual":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R2",20]]},"unplaced":["E2","E3"]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R2",20]]},"unplaced":["E2","E3"]},"passed":true},{"actual":{"placed":{"E0":[["R0",10]],"E2":[["R1",10]],"E3":[["R2",10]],"E4":[["R1",10]]},"unplaced":["E1"]},"check":"normal control 4","expected":{"placed":{"E0":[["R2",10]],"E2":[["R0",10]],"E3":[["R1",10]],"E4":[["R0",10]]},"unplaced":["E1"]},"passed":false},{"actual":{"placed":{"E0":[["R3",30]],"E1":[["R0",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R3",30]],"E1":[["R0",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",10]],"E1":[["R1",20]]},"unplaced":["E2"]},"passed":false},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: best fit room 1\", \"actual\": {\"placed\": {\"A\": [[\"R1\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": false}, {\"check\": \"regression variant: best fit room 2\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\"]}, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R2\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R2\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 10]], \"E2\": [[\"R1\", 10]], \"E3\": [[\"R2\", 10]], \"E4\": [[\"R1\", 10]]}, \"unplaced\": [\"E1\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R2\", 10]], \"E2\": [[\"R0\", 10]], \"E3\": [[\"R1\", 10]], \"E4\": [[\"R0\", 10]]}, \"unplaced\": [\"E1\"]}, \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R0\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R0\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]], \"E0\": [[\"R0\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.708,"exit_code":0,"observations":[{"actual":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"check":"regression: best fit room 1","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R1",20]]},"unplaced":["E0"]},"check":"regression variant: best fit room 2","expected":{"placed":{"E1":[["R1",20]]},"unplaced":["E0"]},"passed":true},{"actual":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R2",20]]},"unplaced":["E2","E3"]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R0",60],["R1",20]],"E1":[["R2",20]]},"unplaced":["E2","E3"]},"passed":true},{"actual":{"placed":{"E0":[["R2",10]],"E2":[["R0",10]],"E3":[["R1",10]],"E4":[["R0",10]]},"unplaced":["E1"]},"check":"normal control 4","expected":{"placed":{"E0":[["R2",10]],"E2":[["R0",10]],"E3":[["R1",10]],"E4":[["R0",10]]},"unplaced":["E1"]},"passed":true},{"actual":{"placed":{"E0":[["R3",30]],"E1":[["R0",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R3",30]],"E1":[["R0",20]],"E2":[["R2",10]],"E3":[["R1",60]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",10]],"E1":[["R1",20]]},"unplaced":["E2"]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",10]],"E1":[["R1",20]]},"unplaced":["E2"]},"passed":true},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",40],["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",30],["R1",30]]},"unplaced":["E0"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: best fit room 1\", \"actual\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"regression variant: best fit room 2\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\"]}, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R2\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 60], [\"R1\", 20]], \"E1\": [[\"R2\", 20]]}, \"unplaced\": [\"E2\", \"E3\"]}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"placed\": {\"E0\": [[\"R2\", 10]], \"E2\": [[\"R0\", 10]], \"E3\": [[\"R1\", 10]], \"E4\": [[\"R0\", 10]]}, \"unplaced\": [\"E1\"]}, \"expected\": {\"placed\": {\"E0\": [[\"R2\", 10]], \"E2\": [[\"R0\", 10]], \"E3\": [[\"R1\", 10]], \"E4\": [[\"R0\", 10]]}, \"unplaced\": [\"E1\"]}, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R0\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E3\": [[\"R1\", 60]], \"E0\": [[\"R3\", 30]], \"E1\": [[\"R0\", 20]], \"E2\": [[\"R2\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 20]], \"E0\": [[\"R0\", 10]]}, \"unplaced\": [\"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 20]], \"E0\": [[\"R0\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 40], [\"R1\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 30], [\"R1\", 30]]}, \"unplaced\": [\"E0\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}