{"abstract":"Long thin objects are placed on too fine a level and span many cells.","category":"Collision detection broadphase","checks":8,"contract":"solve(objs, base, levels): multi-level grid. Each [id,minx,miny,maxx,maxy] goes to the smallest level l (cell size base*2^l) whose cell size is >= the larger box extent, capped at levels-1; its home cell is floor(min corner / level cell size). Return sorted [[id, level, cx, cy]].","evaluation_group":"w2-collision_detection_broadphase-hierarchical-grid-level","failed_approach":"Averaging width and height still under-sizes long objects.","family":"w2-collision_detection_broadphase-hierarchical-grid-level-extent-measure","id":"FA-87621","implementations":{"attempt":{"sha256":"18b4ebd25317df18a09d3bbee737325c83c9a579d203b4df49971c4719c22ef9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(objs, base, levels):\n    out = []\n    for i, a, b, c, d in objs:\n        ext = (c - a + d - b) / 2\n        lvl = 0\n        size = base\n        while size < ext and lvl < levels - 1:\n            size *= 2\n            lvl += 1\n        out.append([i, lvl, math.floor(a / size), math.floor(b / size)])\n    out.sort()\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[4, -1.0, -2.0, 1.0, 0.0], [7, -9.0, -1.5, -7.0, 0.5], [13, -7.0, -1.0, 1.0, 0.0], [16, 6.5, 3.0, 10.5, 12.0], [27, -0.5, 9.0, 0.0, 10.0], [28, -1.0, -5.5, 6.0, -5.0]], 2.0, 5], [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]]], [[[[20, -4.0, -9.0, 3.0, -8.5], [16, -7.0, 1.5, -6.0, 2.0]], 2.0, 5], [[16, 0, -4, 0], [20, 2, -1, -2]]], [[[[32, -2.0, 8.0, 0.0, 12.0], [17, -6.5, -4.0, -4.5, 0.0], [1, -6.5, -9.0, -3.5, 0.0], [26, 6.5, -10.0, 13.5, -9.5], [28, 3.5, -3.5, 7.5, 0.5], [15, 0.0, -7.5, 8.0, -2.5]], 2.0, 4], [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]]], [[[[37, -2.0, 2.5, 0.0, 7.5], [34, 6.0, -9.0, 10.0, -5.0], [2, 8.5, 2.0, 12.5, 11.0], [27, 9.5, 6.5, 16.5, 11.5]], 1.0, 2], [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]]], [[[[34, 9.5, 5.0, 17.5, 14.0], [1, 8.0, 1.0, 11.0, 5.0]], 2.0, 3], [[1, 1, 2, 0], [34, 2, 1, 0]]], [[[[29, -5.5, 8.5, -3.5, 9.0], [8, 1.0, -4.5, 17.0, -0.5], [39, -2.0, 7.0, 0.0, 12.0], [11, 2.0, 8.0, 6.0, 13.0], [4, 1.5, -3.0, 31.5, -2.5]], 2.0, 4], [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]]], [[[[5, -5.0, 3.0, 11.0, 8.0], [31, 7.0, -5.0, 23.0, -3.0], [37, -8.0, 10.0, 22.0, 15.0], [22, 1.0, -9.5, 17.0, -7.5], [14, 3.5, -4.0, 5.5, 0.0]], 1.0, 5], [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]]], [[[[30, -8.0, 10.0, -1.0, 19.0], [14, -4.5, -6.5, -0.5, -1.5], [4, -7.5, 0.0, -0.5, 2.0], [17, 3.5, 9.5, 19.5, 10.5]], 1.0, 5], [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]]]], [[[[[22, -8.5, -4.0, 7.5, 5.0], [16, -5.5, 8.5, 10.5, 10.5]], 2.0, 5], [[16, 3, -1, 0], [22, 3, -1, -1]]], [[[[17, -9.0, -5.5, -7.0, -5.0], [39, -3.0, 5.5, -2.5, 6.5], [32, -4.0, -9.0, 26.0, -4.0], [4, 6.5, -0.5, 10.5, 3.5], [16, -2.5, -1.5, 4.5, 2.5], [5, 2.5, 6.5, 3.0, 7.0], [31, 5.0, -4.5, 8.0, -4.0]], 1.0, 2], [[4, 1, 3, -1], [5, 0, 2, 6], [16, 1, -2, -1], [17, 1, -5, -3], [31, 1, 2, -3], [32, 1, -2, -5], [39, 0, -3, 5]]], [[[[7, 8.0, 2.5, 16.0, 4.5], [20, 7.5, 5.5, 11.5, 14.5], [25, -4.0, -10.0, 3.0, -9.0], [1, 0.5, -0.5, 4.5, 0.0]], 2.0, 5], [[1, 1, 0, -1], [7, 2, 1, 0], [20, 3, 0, 0], [25, 2, -1, -2]]], [[[[17, 9.5, 3.0, 12.5, 12.0], [15, -3.5, 0.0, 12.5, 9.0], [12, -9.0, 2.0, -2.0, 2.5]], 1.0, 4], [[12, 3, -2, 0], [15, 3, -1, 0], [17, 3, 1, 0]]], [[[[7, 7.0, -6.0, 10.0, -1.0], [28, -5.0, -4.5, -1.0, -3.5], [5, -3.0, -7.0, 5.0, 2.0], [29, 2.5, 3.0, 5.5, 7.0], [26, -4.5, -7.5, -0.5, -6.5]], 2.0, 5], [[5, 3, -1, -1], [7, 2, 0, -1], [26, 1, -2, -2], [28, 1, -2, -2], [29, 1, 0, 0]]], [[[[23, -8.0, 9.0, -1.0, 9.5], [2, -8.5, -10.0, 21.5, -1.0], [36, 7.0, 5.0, 14.0, 6.0]], 1.0, 4], [[2, 3, -2, -2], [23, 3, -1, 1], [36, 3, 0, 0]]], [[[[7, 6.0, -10.0, 36.0, -6.0], [4, 9.5, 3.0, 12.5, 8.0], [13, -5.5, -0.5, 1.5, 4.5], [37, 2.5, 8.5, 6.5, 13.5]], 2.0, 2], [[4, 1, 2, 0], [7, 1, 1, -3], [13, 1, -2, -1], [37, 1, 0, 2]]], [[[[2, 0.5, 2.0, 1.0, 2.5], [22, 1.5, 9.5, 8.5, 14.5], [5, -10.0, 6.0, -9.5, 6.5], [9, 1.5, 3.0, 31.5, 8.0], [20, 4.5, -7.0, 5.5, -6.5], [18, 0.0, -8.5, 3.0, -4.5], [37, 4.0, -2.0, 34.0, 2.0]], 2.0, 2], [[2, 0, 0, 1], [5, 0, -5, 3], [9, 1, 0, 0], [18, 1, 0, -3], [20, 0, 2, -4], [22, 1, 0, 2], [37, 1, 1, -1]]]], [[[[[31, 4.0, 6.0, 5.0, 11.0], [33, -7.0, 6.5, 1.0, 7.5], [19, 7.5, 6.5, 10.5, 10.5], [15, -4.5, 4.5, 11.5, 9.5], [1, 8.5, -3.5, 15.5, -3.0], [18, -9.5, -8.5, -2.5, -7.5]], 2.0, 4], [[1, 2, 1, -1], [15, 3, -1, 0], [18, 2, -2, -2], [19, 1, 1, 1], [31, 2, 0, 0], [33, 2, -1, 0]]], [[[[8, 3.5, -1.0, 4.5, -0.5], [11, -5.5, 6.5, 10.5, 15.5], [12, 7.0, -9.5, 9.0, -7.5], [4, 5.5, 2.0, 35.5, 11.0]], 2.0, 3], [[4, 2, 0, 0], [8, 0, 1, -1], [11, 2, -1, 0], [12, 0, 3, -5]]], [[[[7, -1.5, 5.0, 28.5, 7.0], [31, 5.5, 7.5, 21.5, 9.5]], 1.0, 5], [[7, 4, -1, 0], [31, 4, 0, 0]]], [[[[34, -9.5, -3.5, -9.0, -1.5], [31, 5.5, 10.0, 8.5, 14.0], [24, -6.0, 5.5, 1.0, 9.5], [12, -1.0, 7.0, 1.0, 12.0], [28, -8.5, 10.0, -0.5, 11.0], [4, -9.5, 8.5, -7.5, 10.5], [37, 8.0, -3.0, 8.5, 2.0], [25, -7.0, -7.0, -5.0, -6.5]], 2.0, 3], [[4, 0, -5, 4], [12, 2, -1, 0], [24, 2, -1, 0], [25, 0, -4, -4], [28, 2, -2, 1], [31, 1, 1, 2], [34, 0, -5, -2], [37, 2, 1, -1]]], [[[[7, -8.0, -9.0, -1.0, -8.5], [10, 3.0, -9.0, 6.0, -5.0], [3, -5.5, -8.0, -2.5, -3.0]], 1.0, 4], [[3, 3, -1, -1], [7, 3, -1, -2], [10, 2, 0, -3]]], [[[[26, 8.5, 6.5, 15.5, 7.5], [30, 7.5, 1.5, 37.5, 10.5], [23, -2.0, 9.0, -1.5, 18.0]], 2.0, 3], [[23, 2, -1, 1], [26, 2, 1, 0], [30, 2, 0, 0]]], [[[[34, -9.5, -9.0, -5.5, 0.0], [16, -7.0, -1.5, -6.0, -1.0]], 2.0, 3], [[16, 0, -4, -1], [34, 2, -2, -2]]], [[[[9, -8.5, 0.0, -8.0, 0.5], [14, -4.0, -3.0, -3.5, -2.0], [28, -3.0, 8.5, 5.0, 10.5], [29, 7.5, -8.5, 8.5, -7.5]], 1.0, 2], [[9, 0, -9, 0], [14, 0, -4, -3], [28, 1, -2, 4], [29, 0, 7, -9]]]], [[[[[10, 3.0, -5.5, 3.5, -5.0], [21, -1.5, -7.0, 1.5, 2.0], [32, 1.0, 7.0, 4.0, 7.5], [18, -3.5, -6.5, 0.5, -6.0], [29, -5.5, 5.0, 2.5, 6.0], [12, 2.5, -9.0, 32.5, 0.0], [38, 1.5, -7.0, 2.5, -2.0], [19, -1.0, 2.5, -0.5, 4.5]], 2.0, 2], [[10, 0, 1, -3], [12, 1, 0, -3], [18, 1, -1, -2], [19, 0, -1, 1], [21, 1, -1, -2], [29, 1, -2, 1], [32, 1, 0, 1], [38, 1, 0, -2]]], [[[[2, 7.5, 5.0, 37.5, 14.0], [1, -9.0, 2.0, -2.0, 6.0], [5, 3.5, 4.0, 10.5, 9.0], [3, -9.5, -1.0, -7.5, 3.0], [16, -9.0, 8.0, -5.0, 12.0]], 1.0, 2], [[1, 1, -5, 1], [2, 1, 3, 2], [3, 1, -5, -1], [5, 1, 1, 2], [16, 1, -5, 4]]], [[[[20, -9.5, 10.0, -7.5, 19.0], [2, -2.5, -0.5, 5.5, 3.5], [13, -10.0, -2.5, -3.0, -0.5], [24, 2.0, -0.5, 9.0, 1.5], [23, 1.5, 1.0, 5.5, 2.0], [17, -10.0, -8.5, 6.0, -3.5], [1, 2.5, -0.5, 10.5, 0.5], [8, 9.5, 4.0, 13.5, 6.0]], 2.0, 2], [[1, 1, 0, -1], [2, 1, -1, -1], [8, 1, 2, 1], [13, 1, -3, -1], [17, 1, -3, -3], [20, 1, -3, 2], [23, 1, 0, 0], [24, 1, 0, -1]]], [[[[36, 1.0, 10.0, 31.0, 14.0], [27, 9.5, 9.0, 16.5, 13.0], [3, -5.5, 3.0, -2.5, 8.0]], 2.0, 2], [[3, 1, -2, 0], [27, 1, 2, 2], [36, 1, 0, 2]]], [[[[11, -2.0, -6.0, 2.0, -4.0], [16, 6.5, -8.5, 13.5, -3.5], [6, -2.5, 4.0, 5.5, 5.0], [2, 7.0, 2.5, 9.0, 3.0], [38, 10.0, -6.5, 10.5, -4.5]], 1.0, 5], [[2, 1, 3, 1], [6, 3, -1, 0], [11, 2, -1, -2], [16, 3, 0, -2], [38, 1, 5, -4]]], [[[[19, -9.5, -0.5, -8.5, 0.0], [25, 6.0, -9.0, 7.0, -8.5]], 2.0, 2], [[19, 0, -5, -1], [25, 0, 3, -5]]], [[[[10, 0.0, -1.5, 4.0, 0.5], [30, -10.0, -9.5, -7.0, -8.5], [33, 5.5, 0.0, 6.0, 9.0], [3, -6.0, -3.5, -5.5, -1.5], [7, 2.0, 8.0, 32.0, 9.0], [19, -1.0, 2.0, 29.0, 7.0], [22, -5.0, 3.5, 2.0, 4.5], [28, 5.0, 7.5, 9.0, 11.5]], 2.0, 3], [[3, 0, -3, -2], [7, 2, 0, 1], [10, 1, 0, -1], [19, 2, -1, 0], [22, 2, -1, 0], [28, 1, 1, 1], [30, 1, -3, -3], [33, 2, 0, 0]]], [[[[23, 3.0, 0.5, 5.0, 9.5], [2, -3.5, 9.0, -2.5, 14.0], [13, 0.0, -4.0, 2.0, 5.0], [37, -3.5, 7.5, 12.5, 16.5], [8, 8.0, 7.0, 15.0, 12.0], [7, 8.0, 1.5, 12.0, 6.5], [18, -7.5, 7.0, 8.5, 9.0], [38, 0.5, 4.5, 8.5, 6.5], [17, 6.5, 3.5, 36.5, 4.0]], 1.0, 3], [[2, 2, -1, 2], [7, 2, 2, 0], [8, 2, 2, 1], [13, 2, 0, -1], [17, 2, 1, 0], [18, 2, -2, 1], [23, 2, 0, 0], [37, 2, -1, 1], [38, 2, 0, 1]]]], [[[[[35, -2.5, 5.5, 1.5, 9.5], [3, -2.0, 3.0, 1.0, 8.0], [12, 8.5, 4.0, 38.5, 13.0]], 1.0, 3], [[3, 2, -1, 0], [12, 2, 2, 1], [35, 2, -1, 1]]], [[[[29, -2.5, -5.0, 0.5, 0.0], [1, -6.0, -9.0, 10.0, -5.0]], 1.0, 3], [[1, 2, -2, -3], [29, 2, -1, -2]]], [[[[28, -3.0, 1.5, 1.0, 2.5], [31, 3.5, 7.5, 5.5, 9.5], [1, 1.0, -7.0, 3.0, -6.5], [27, -5.0, 7.0, 3.0, 7.5], [9, 6.0, 10.0, 10.0, 19.0], [32, 6.5, 9.5, 36.5, 10.0], [36, 4.5, 7.0, 5.5, 12.0]], 1.0, 3], [[1, 1, 0, -4], [9, 2, 1, 2], [27, 2, -2, 1], [28, 2, -1, 0], [31, 1, 1, 3], [32, 2, 1, 2], [36, 2, 1, 1]]], [[[[14, 1.5, -4.5, 2.5, -4.0], [4, -2.0, -6.0, 28.0, -4.0], [17, 3.0, -8.0, 10.0, -4.0], [10, 5.5, -4.5, 6.5, 0.5], [24, -8.0, -5.0, 22.0, -3.0], [35, 0.5, -3.0, 30.5, 1.0], [34, -1.5, 1.5, 6.5, 2.5], [32, 7.5, 8.0, 14.5, 10.0]], 2.0, 4], [[4, 3, -1, -1], [10, 2, 0, -1], [14, 0, 0, -3], [17, 2, 0, -1], [24, 3, -1, -1], [32, 2, 0, 1], [34, 2, -1, 0], [35, 3, 0, -1]]], [[[[18, -1.5, 8.0, 14.5, 10.0], [26, -5.0, 8.5, -2.0, 13.5], [8, -6.0, 10.0, -5.5, 15.0], [17, -6.0, 8.0, -5.5, 9.0], [36, -3.5, 9.5, 26.5, 10.0], [6, -6.0, 6.5, -2.0, 10.5]], 1.0, 4], [[6, 2, -2, 1], [8, 3, -1, 1], [17, 0, -6, 8], [18, 3, -1, 1], [26, 3, -1, 1], [36, 3, -1, 1]]], [[[[6, 8.0, -5.0, 16.0, -3.0], [23, -7.5, 9.0, -5.5, 18.0], [32, 4.5, 8.5, 12.5, 10.5], [20, -3.0, 5.5, -1.0, 10.5], [13, 5.5, 7.0, 12.5, 11.0], [39, 4.0, -8.0, 12.0, -6.0], [36, 0.5, 4.5, 30.5, 9.5]], 1.0, 2], [[6, 1, 4, -3], [13, 1, 2, 3], [20, 1, -2, 2], [23, 1, -4, 4], [32, 1, 2, 4], [36, 1, 0, 2], [39, 1, 2, -4]]], [[[[28, -2.0, 0.0, 14.0, 9.0], [34, 4.5, 0.5, 5.5, 4.5], [14, 6.5, -10.0, 9.5, -9.5], [20, -0.5, -6.0, 15.5, 3.0], [31, -9.5, 5.5, -1.5, 6.0], [4, -1.5, 9.0, 5.5, 9.5], [23, -4.5, -5.5, 25.5, -3.5]], 1.0, 4], [[4, 3, -1, 1], [14, 2, 1, -3], [20, 3, -1, -1], [23, 3, -1, -1], [28, 3, -1, 0], [31, 3, -2, 0], [34, 2, 1, 0]]], [[[[27, -3.5, 3.5, -3.0, 8.5], [18, 4.5, 9.0, 5.0, 13.0], [13, -2.0, -6.5, 6.0, -4.5], [10, 0.0, -1.0, 3.0, 0.0], [12, -2.0, -1.5, -1.5, 7.5]], 2.0, 5], [[10, 1, 0, -1], [12, 3, -1, -1], [13, 2, -1, -1], [18, 1, 1, 2], [27, 2, -1, 0]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, 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":"925cc57f2707749189634a5aae557722606d9a185f82fab7bb569ad48c9aa134","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(objs, base, levels):\n    out = []\n    for i, a, b, c, d in objs:\n        ext = min(c - a, d - b)\n        lvl = 0\n        size = base\n        while size < ext and lvl < levels - 1:\n            size *= 2\n            lvl += 1\n        out.append([i, lvl, math.floor(a / size), math.floor(b / size)])\n    out.sort()\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[4, -1.0, -2.0, 1.0, 0.0], [7, -9.0, -1.5, -7.0, 0.5], [13, -7.0, -1.0, 1.0, 0.0], [16, 6.5, 3.0, 10.5, 12.0], [27, -0.5, 9.0, 0.0, 10.0], [28, -1.0, -5.5, 6.0, -5.0]], 2.0, 5], [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]]], [[[[20, -4.0, -9.0, 3.0, -8.5], [16, -7.0, 1.5, -6.0, 2.0]], 2.0, 5], [[16, 0, -4, 0], [20, 2, -1, -2]]], [[[[32, -2.0, 8.0, 0.0, 12.0], [17, -6.5, -4.0, -4.5, 0.0], [1, -6.5, -9.0, -3.5, 0.0], [26, 6.5, -10.0, 13.5, -9.5], [28, 3.5, -3.5, 7.5, 0.5], [15, 0.0, -7.5, 8.0, -2.5]], 2.0, 4], [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]]], [[[[37, -2.0, 2.5, 0.0, 7.5], [34, 6.0, -9.0, 10.0, -5.0], [2, 8.5, 2.0, 12.5, 11.0], [27, 9.5, 6.5, 16.5, 11.5]], 1.0, 2], [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]]], [[[[34, 9.5, 5.0, 17.5, 14.0], [1, 8.0, 1.0, 11.0, 5.0]], 2.0, 3], [[1, 1, 2, 0], [34, 2, 1, 0]]], [[[[29, -5.5, 8.5, -3.5, 9.0], [8, 1.0, -4.5, 17.0, -0.5], [39, -2.0, 7.0, 0.0, 12.0], [11, 2.0, 8.0, 6.0, 13.0], [4, 1.5, -3.0, 31.5, -2.5]], 2.0, 4], [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]]], [[[[5, -5.0, 3.0, 11.0, 8.0], [31, 7.0, -5.0, 23.0, -3.0], [37, -8.0, 10.0, 22.0, 15.0], [22, 1.0, -9.5, 17.0, -7.5], [14, 3.5, -4.0, 5.5, 0.0]], 1.0, 5], [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]]], [[[[30, -8.0, 10.0, -1.0, 19.0], [14, -4.5, -6.5, -0.5, -1.5], [4, -7.5, 0.0, -0.5, 2.0], [17, 3.5, 9.5, 19.5, 10.5]], 1.0, 5], [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]]]], [[[[[22, -8.5, -4.0, 7.5, 5.0], [16, -5.5, 8.5, 10.5, 10.5]], 2.0, 5], [[16, 3, -1, 0], [22, 3, -1, -1]]], [[[[17, -9.0, -5.5, -7.0, -5.0], [39, -3.0, 5.5, -2.5, 6.5], [32, -4.0, -9.0, 26.0, -4.0], [4, 6.5, -0.5, 10.5, 3.5], [16, -2.5, -1.5, 4.5, 2.5], [5, 2.5, 6.5, 3.0, 7.0], [31, 5.0, -4.5, 8.0, -4.0]], 1.0, 2], [[4, 1, 3, -1], [5, 0, 2, 6], [16, 1, -2, -1], [17, 1, -5, -3], [31, 1, 2, -3], [32, 1, -2, -5], [39, 0, -3, 5]]], [[[[7, 8.0, 2.5, 16.0, 4.5], [20, 7.5, 5.5, 11.5, 14.5], [25, -4.0, -10.0, 3.0, -9.0], [1, 0.5, -0.5, 4.5, 0.0]], 2.0, 5], [[1, 1, 0, -1], [7, 2, 1, 0], [20, 3, 0, 0], [25, 2, -1, -2]]], [[[[17, 9.5, 3.0, 12.5, 12.0], [15, -3.5, 0.0, 12.5, 9.0], [12, -9.0, 2.0, -2.0, 2.5]], 1.0, 4], [[12, 3, -2, 0], [15, 3, -1, 0], [17, 3, 1, 0]]], [[[[7, 7.0, -6.0, 10.0, -1.0], [28, -5.0, -4.5, -1.0, -3.5], [5, -3.0, -7.0, 5.0, 2.0], [29, 2.5, 3.0, 5.5, 7.0], [26, -4.5, -7.5, -0.5, -6.5]], 2.0, 5], [[5, 3, -1, -1], [7, 2, 0, -1], [26, 1, -2, -2], [28, 1, -2, -2], [29, 1, 0, 0]]], [[[[23, -8.0, 9.0, -1.0, 9.5], [2, -8.5, -10.0, 21.5, -1.0], [36, 7.0, 5.0, 14.0, 6.0]], 1.0, 4], [[2, 3, -2, -2], [23, 3, -1, 1], [36, 3, 0, 0]]], [[[[7, 6.0, -10.0, 36.0, -6.0], [4, 9.5, 3.0, 12.5, 8.0], [13, -5.5, -0.5, 1.5, 4.5], [37, 2.5, 8.5, 6.5, 13.5]], 2.0, 2], [[4, 1, 2, 0], [7, 1, 1, -3], [13, 1, -2, -1], [37, 1, 0, 2]]], [[[[2, 0.5, 2.0, 1.0, 2.5], [22, 1.5, 9.5, 8.5, 14.5], [5, -10.0, 6.0, -9.5, 6.5], [9, 1.5, 3.0, 31.5, 8.0], [20, 4.5, -7.0, 5.5, -6.5], [18, 0.0, -8.5, 3.0, -4.5], [37, 4.0, -2.0, 34.0, 2.0]], 2.0, 2], [[2, 0, 0, 1], [5, 0, -5, 3], [9, 1, 0, 0], [18, 1, 0, -3], [20, 0, 2, -4], [22, 1, 0, 2], [37, 1, 1, -1]]]], [[[[[31, 4.0, 6.0, 5.0, 11.0], [33, -7.0, 6.5, 1.0, 7.5], [19, 7.5, 6.5, 10.5, 10.5], [15, -4.5, 4.5, 11.5, 9.5], [1, 8.5, -3.5, 15.5, -3.0], [18, -9.5, -8.5, -2.5, -7.5]], 2.0, 4], [[1, 2, 1, -1], [15, 3, -1, 0], [18, 2, -2, -2], [19, 1, 1, 1], [31, 2, 0, 0], [33, 2, -1, 0]]], [[[[8, 3.5, -1.0, 4.5, -0.5], [11, -5.5, 6.5, 10.5, 15.5], [12, 7.0, -9.5, 9.0, -7.5], [4, 5.5, 2.0, 35.5, 11.0]], 2.0, 3], [[4, 2, 0, 0], [8, 0, 1, -1], [11, 2, -1, 0], [12, 0, 3, -5]]], [[[[7, -1.5, 5.0, 28.5, 7.0], [31, 5.5, 7.5, 21.5, 9.5]], 1.0, 5], [[7, 4, -1, 0], [31, 4, 0, 0]]], [[[[34, -9.5, -3.5, -9.0, -1.5], [31, 5.5, 10.0, 8.5, 14.0], [24, -6.0, 5.5, 1.0, 9.5], [12, -1.0, 7.0, 1.0, 12.0], [28, -8.5, 10.0, -0.5, 11.0], [4, -9.5, 8.5, -7.5, 10.5], [37, 8.0, -3.0, 8.5, 2.0], [25, -7.0, -7.0, -5.0, -6.5]], 2.0, 3], [[4, 0, -5, 4], [12, 2, -1, 0], [24, 2, -1, 0], [25, 0, -4, -4], [28, 2, -2, 1], [31, 1, 1, 2], [34, 0, -5, -2], [37, 2, 1, -1]]], [[[[7, -8.0, -9.0, -1.0, -8.5], [10, 3.0, -9.0, 6.0, -5.0], [3, -5.5, -8.0, -2.5, -3.0]], 1.0, 4], [[3, 3, -1, -1], [7, 3, -1, -2], [10, 2, 0, -3]]], [[[[26, 8.5, 6.5, 15.5, 7.5], [30, 7.5, 1.5, 37.5, 10.5], [23, -2.0, 9.0, -1.5, 18.0]], 2.0, 3], [[23, 2, -1, 1], [26, 2, 1, 0], [30, 2, 0, 0]]], [[[[34, -9.5, -9.0, -5.5, 0.0], [16, -7.0, -1.5, -6.0, -1.0]], 2.0, 3], [[16, 0, -4, -1], [34, 2, -2, -2]]], [[[[9, -8.5, 0.0, -8.0, 0.5], [14, -4.0, -3.0, -3.5, -2.0], [28, -3.0, 8.5, 5.0, 10.5], [29, 7.5, -8.5, 8.5, -7.5]], 1.0, 2], [[9, 0, -9, 0], [14, 0, -4, -3], [28, 1, -2, 4], [29, 0, 7, -9]]]], [[[[[10, 3.0, -5.5, 3.5, -5.0], [21, -1.5, -7.0, 1.5, 2.0], [32, 1.0, 7.0, 4.0, 7.5], [18, -3.5, -6.5, 0.5, -6.0], [29, -5.5, 5.0, 2.5, 6.0], [12, 2.5, -9.0, 32.5, 0.0], [38, 1.5, -7.0, 2.5, -2.0], [19, -1.0, 2.5, -0.5, 4.5]], 2.0, 2], [[10, 0, 1, -3], [12, 1, 0, -3], [18, 1, -1, -2], [19, 0, -1, 1], [21, 1, -1, -2], [29, 1, -2, 1], [32, 1, 0, 1], [38, 1, 0, -2]]], [[[[2, 7.5, 5.0, 37.5, 14.0], [1, -9.0, 2.0, -2.0, 6.0], [5, 3.5, 4.0, 10.5, 9.0], [3, -9.5, -1.0, -7.5, 3.0], [16, -9.0, 8.0, -5.0, 12.0]], 1.0, 2], [[1, 1, -5, 1], [2, 1, 3, 2], [3, 1, -5, -1], [5, 1, 1, 2], [16, 1, -5, 4]]], [[[[20, -9.5, 10.0, -7.5, 19.0], [2, -2.5, -0.5, 5.5, 3.5], [13, -10.0, -2.5, -3.0, -0.5], [24, 2.0, -0.5, 9.0, 1.5], [23, 1.5, 1.0, 5.5, 2.0], [17, -10.0, -8.5, 6.0, -3.5], [1, 2.5, -0.5, 10.5, 0.5], [8, 9.5, 4.0, 13.5, 6.0]], 2.0, 2], [[1, 1, 0, -1], [2, 1, -1, -1], [8, 1, 2, 1], [13, 1, -3, -1], [17, 1, -3, -3], [20, 1, -3, 2], [23, 1, 0, 0], [24, 1, 0, -1]]], [[[[36, 1.0, 10.0, 31.0, 14.0], [27, 9.5, 9.0, 16.5, 13.0], [3, -5.5, 3.0, -2.5, 8.0]], 2.0, 2], [[3, 1, -2, 0], [27, 1, 2, 2], [36, 1, 0, 2]]], [[[[11, -2.0, -6.0, 2.0, -4.0], [16, 6.5, -8.5, 13.5, -3.5], [6, -2.5, 4.0, 5.5, 5.0], [2, 7.0, 2.5, 9.0, 3.0], [38, 10.0, -6.5, 10.5, -4.5]], 1.0, 5], [[2, 1, 3, 1], [6, 3, -1, 0], [11, 2, -1, -2], [16, 3, 0, -2], [38, 1, 5, -4]]], [[[[19, -9.5, -0.5, -8.5, 0.0], [25, 6.0, -9.0, 7.0, -8.5]], 2.0, 2], [[19, 0, -5, -1], [25, 0, 3, -5]]], [[[[10, 0.0, -1.5, 4.0, 0.5], [30, -10.0, -9.5, -7.0, -8.5], [33, 5.5, 0.0, 6.0, 9.0], [3, -6.0, -3.5, -5.5, -1.5], [7, 2.0, 8.0, 32.0, 9.0], [19, -1.0, 2.0, 29.0, 7.0], [22, -5.0, 3.5, 2.0, 4.5], [28, 5.0, 7.5, 9.0, 11.5]], 2.0, 3], [[3, 0, -3, -2], [7, 2, 0, 1], [10, 1, 0, -1], [19, 2, -1, 0], [22, 2, -1, 0], [28, 1, 1, 1], [30, 1, -3, -3], [33, 2, 0, 0]]], [[[[23, 3.0, 0.5, 5.0, 9.5], [2, -3.5, 9.0, -2.5, 14.0], [13, 0.0, -4.0, 2.0, 5.0], [37, -3.5, 7.5, 12.5, 16.5], [8, 8.0, 7.0, 15.0, 12.0], [7, 8.0, 1.5, 12.0, 6.5], [18, -7.5, 7.0, 8.5, 9.0], [38, 0.5, 4.5, 8.5, 6.5], [17, 6.5, 3.5, 36.5, 4.0]], 1.0, 3], [[2, 2, -1, 2], [7, 2, 2, 0], [8, 2, 2, 1], [13, 2, 0, -1], [17, 2, 1, 0], [18, 2, -2, 1], [23, 2, 0, 0], [37, 2, -1, 1], [38, 2, 0, 1]]]], [[[[[35, -2.5, 5.5, 1.5, 9.5], [3, -2.0, 3.0, 1.0, 8.0], [12, 8.5, 4.0, 38.5, 13.0]], 1.0, 3], [[3, 2, -1, 0], [12, 2, 2, 1], [35, 2, -1, 1]]], [[[[29, -2.5, -5.0, 0.5, 0.0], [1, -6.0, -9.0, 10.0, -5.0]], 1.0, 3], [[1, 2, -2, -3], [29, 2, -1, -2]]], [[[[28, -3.0, 1.5, 1.0, 2.5], [31, 3.5, 7.5, 5.5, 9.5], [1, 1.0, -7.0, 3.0, -6.5], [27, -5.0, 7.0, 3.0, 7.5], [9, 6.0, 10.0, 10.0, 19.0], [32, 6.5, 9.5, 36.5, 10.0], [36, 4.5, 7.0, 5.5, 12.0]], 1.0, 3], [[1, 1, 0, -4], [9, 2, 1, 2], [27, 2, -2, 1], [28, 2, -1, 0], [31, 1, 1, 3], [32, 2, 1, 2], [36, 2, 1, 1]]], [[[[14, 1.5, -4.5, 2.5, -4.0], [4, -2.0, -6.0, 28.0, -4.0], [17, 3.0, -8.0, 10.0, -4.0], [10, 5.5, -4.5, 6.5, 0.5], [24, -8.0, -5.0, 22.0, -3.0], [35, 0.5, -3.0, 30.5, 1.0], [34, -1.5, 1.5, 6.5, 2.5], [32, 7.5, 8.0, 14.5, 10.0]], 2.0, 4], [[4, 3, -1, -1], [10, 2, 0, -1], [14, 0, 0, -3], [17, 2, 0, -1], [24, 3, -1, -1], [32, 2, 0, 1], [34, 2, -1, 0], [35, 3, 0, -1]]], [[[[18, -1.5, 8.0, 14.5, 10.0], [26, -5.0, 8.5, -2.0, 13.5], [8, -6.0, 10.0, -5.5, 15.0], [17, -6.0, 8.0, -5.5, 9.0], [36, -3.5, 9.5, 26.5, 10.0], [6, -6.0, 6.5, -2.0, 10.5]], 1.0, 4], [[6, 2, -2, 1], [8, 3, -1, 1], [17, 0, -6, 8], [18, 3, -1, 1], [26, 3, -1, 1], [36, 3, -1, 1]]], [[[[6, 8.0, -5.0, 16.0, -3.0], [23, -7.5, 9.0, -5.5, 18.0], [32, 4.5, 8.5, 12.5, 10.5], [20, -3.0, 5.5, -1.0, 10.5], [13, 5.5, 7.0, 12.5, 11.0], [39, 4.0, -8.0, 12.0, -6.0], [36, 0.5, 4.5, 30.5, 9.5]], 1.0, 2], [[6, 1, 4, -3], [13, 1, 2, 3], [20, 1, -2, 2], [23, 1, -4, 4], [32, 1, 2, 4], [36, 1, 0, 2], [39, 1, 2, -4]]], [[[[28, -2.0, 0.0, 14.0, 9.0], [34, 4.5, 0.5, 5.5, 4.5], [14, 6.5, -10.0, 9.5, -9.5], [20, -0.5, -6.0, 15.5, 3.0], [31, -9.5, 5.5, -1.5, 6.0], [4, -1.5, 9.0, 5.5, 9.5], [23, -4.5, -5.5, 25.5, -3.5]], 1.0, 4], [[4, 3, -1, 1], [14, 2, 1, -3], [20, 3, -1, -1], [23, 3, -1, -1], [28, 3, -1, 0], [31, 3, -2, 0], [34, 2, 1, 0]]], [[[[27, -3.5, 3.5, -3.0, 8.5], [18, 4.5, 9.0, 5.0, 13.0], [13, -2.0, -6.5, 6.0, -4.5], [10, 0.0, -1.0, 3.0, 0.0], [12, -2.0, -1.5, -1.5, 7.5]], 2.0, 5], [[10, 1, 0, -1], [12, 3, -1, -1], [13, 2, -1, -1], [18, 1, 1, 2], [27, 2, -1, 0]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, 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":"1f365177e45415058b98f14570dba39870aeec352fa3ace5d9bf359876b82e1e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(objs, base, levels):\n    out = []\n    for i, a, b, c, d in objs:\n        ext = max(c - a, d - b)\n        lvl = 0\n        size = base\n        while size < ext and lvl < levels - 1:\n            size *= 2\n            lvl += 1\n        out.append([i, lvl, math.floor(a / size), math.floor(b / size)])\n    out.sort()\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[4, -1.0, -2.0, 1.0, 0.0], [7, -9.0, -1.5, -7.0, 0.5], [13, -7.0, -1.0, 1.0, 0.0], [16, 6.5, 3.0, 10.5, 12.0], [27, -0.5, 9.0, 0.0, 10.0], [28, -1.0, -5.5, 6.0, -5.0]], 2.0, 5], [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]]], [[[[20, -4.0, -9.0, 3.0, -8.5], [16, -7.0, 1.5, -6.0, 2.0]], 2.0, 5], [[16, 0, -4, 0], [20, 2, -1, -2]]], [[[[32, -2.0, 8.0, 0.0, 12.0], [17, -6.5, -4.0, -4.5, 0.0], [1, -6.5, -9.0, -3.5, 0.0], [26, 6.5, -10.0, 13.5, -9.5], [28, 3.5, -3.5, 7.5, 0.5], [15, 0.0, -7.5, 8.0, -2.5]], 2.0, 4], [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]]], [[[[37, -2.0, 2.5, 0.0, 7.5], [34, 6.0, -9.0, 10.0, -5.0], [2, 8.5, 2.0, 12.5, 11.0], [27, 9.5, 6.5, 16.5, 11.5]], 1.0, 2], [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]]], [[[[34, 9.5, 5.0, 17.5, 14.0], [1, 8.0, 1.0, 11.0, 5.0]], 2.0, 3], [[1, 1, 2, 0], [34, 2, 1, 0]]], [[[[29, -5.5, 8.5, -3.5, 9.0], [8, 1.0, -4.5, 17.0, -0.5], [39, -2.0, 7.0, 0.0, 12.0], [11, 2.0, 8.0, 6.0, 13.0], [4, 1.5, -3.0, 31.5, -2.5]], 2.0, 4], [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]]], [[[[5, -5.0, 3.0, 11.0, 8.0], [31, 7.0, -5.0, 23.0, -3.0], [37, -8.0, 10.0, 22.0, 15.0], [22, 1.0, -9.5, 17.0, -7.5], [14, 3.5, -4.0, 5.5, 0.0]], 1.0, 5], [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]]], [[[[30, -8.0, 10.0, -1.0, 19.0], [14, -4.5, -6.5, -0.5, -1.5], [4, -7.5, 0.0, -0.5, 2.0], [17, 3.5, 9.5, 19.5, 10.5]], 1.0, 5], [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]]]], [[[[[22, -8.5, -4.0, 7.5, 5.0], [16, -5.5, 8.5, 10.5, 10.5]], 2.0, 5], [[16, 3, -1, 0], [22, 3, -1, -1]]], [[[[17, -9.0, -5.5, -7.0, -5.0], [39, -3.0, 5.5, -2.5, 6.5], [32, -4.0, -9.0, 26.0, -4.0], [4, 6.5, -0.5, 10.5, 3.5], [16, -2.5, -1.5, 4.5, 2.5], [5, 2.5, 6.5, 3.0, 7.0], [31, 5.0, -4.5, 8.0, -4.0]], 1.0, 2], [[4, 1, 3, -1], [5, 0, 2, 6], [16, 1, -2, -1], [17, 1, -5, -3], [31, 1, 2, -3], [32, 1, -2, -5], [39, 0, -3, 5]]], [[[[7, 8.0, 2.5, 16.0, 4.5], [20, 7.5, 5.5, 11.5, 14.5], [25, -4.0, -10.0, 3.0, -9.0], [1, 0.5, -0.5, 4.5, 0.0]], 2.0, 5], [[1, 1, 0, -1], [7, 2, 1, 0], [20, 3, 0, 0], [25, 2, -1, -2]]], [[[[17, 9.5, 3.0, 12.5, 12.0], [15, -3.5, 0.0, 12.5, 9.0], [12, -9.0, 2.0, -2.0, 2.5]], 1.0, 4], [[12, 3, -2, 0], [15, 3, -1, 0], [17, 3, 1, 0]]], [[[[7, 7.0, -6.0, 10.0, -1.0], [28, -5.0, -4.5, -1.0, -3.5], [5, -3.0, -7.0, 5.0, 2.0], [29, 2.5, 3.0, 5.5, 7.0], [26, -4.5, -7.5, -0.5, -6.5]], 2.0, 5], [[5, 3, -1, -1], [7, 2, 0, -1], [26, 1, -2, -2], [28, 1, -2, -2], [29, 1, 0, 0]]], [[[[23, -8.0, 9.0, -1.0, 9.5], [2, -8.5, -10.0, 21.5, -1.0], [36, 7.0, 5.0, 14.0, 6.0]], 1.0, 4], [[2, 3, -2, -2], [23, 3, -1, 1], [36, 3, 0, 0]]], [[[[7, 6.0, -10.0, 36.0, -6.0], [4, 9.5, 3.0, 12.5, 8.0], [13, -5.5, -0.5, 1.5, 4.5], [37, 2.5, 8.5, 6.5, 13.5]], 2.0, 2], [[4, 1, 2, 0], [7, 1, 1, -3], [13, 1, -2, -1], [37, 1, 0, 2]]], [[[[2, 0.5, 2.0, 1.0, 2.5], [22, 1.5, 9.5, 8.5, 14.5], [5, -10.0, 6.0, -9.5, 6.5], [9, 1.5, 3.0, 31.5, 8.0], [20, 4.5, -7.0, 5.5, -6.5], [18, 0.0, -8.5, 3.0, -4.5], [37, 4.0, -2.0, 34.0, 2.0]], 2.0, 2], [[2, 0, 0, 1], [5, 0, -5, 3], [9, 1, 0, 0], [18, 1, 0, -3], [20, 0, 2, -4], [22, 1, 0, 2], [37, 1, 1, -1]]]], [[[[[31, 4.0, 6.0, 5.0, 11.0], [33, -7.0, 6.5, 1.0, 7.5], [19, 7.5, 6.5, 10.5, 10.5], [15, -4.5, 4.5, 11.5, 9.5], [1, 8.5, -3.5, 15.5, -3.0], [18, -9.5, -8.5, -2.5, -7.5]], 2.0, 4], [[1, 2, 1, -1], [15, 3, -1, 0], [18, 2, -2, -2], [19, 1, 1, 1], [31, 2, 0, 0], [33, 2, -1, 0]]], [[[[8, 3.5, -1.0, 4.5, -0.5], [11, -5.5, 6.5, 10.5, 15.5], [12, 7.0, -9.5, 9.0, -7.5], [4, 5.5, 2.0, 35.5, 11.0]], 2.0, 3], [[4, 2, 0, 0], [8, 0, 1, -1], [11, 2, -1, 0], [12, 0, 3, -5]]], [[[[7, -1.5, 5.0, 28.5, 7.0], [31, 5.5, 7.5, 21.5, 9.5]], 1.0, 5], [[7, 4, -1, 0], [31, 4, 0, 0]]], [[[[34, -9.5, -3.5, -9.0, -1.5], [31, 5.5, 10.0, 8.5, 14.0], [24, -6.0, 5.5, 1.0, 9.5], [12, -1.0, 7.0, 1.0, 12.0], [28, -8.5, 10.0, -0.5, 11.0], [4, -9.5, 8.5, -7.5, 10.5], [37, 8.0, -3.0, 8.5, 2.0], [25, -7.0, -7.0, -5.0, -6.5]], 2.0, 3], [[4, 0, -5, 4], [12, 2, -1, 0], [24, 2, -1, 0], [25, 0, -4, -4], [28, 2, -2, 1], [31, 1, 1, 2], [34, 0, -5, -2], [37, 2, 1, -1]]], [[[[7, -8.0, -9.0, -1.0, -8.5], [10, 3.0, -9.0, 6.0, -5.0], [3, -5.5, -8.0, -2.5, -3.0]], 1.0, 4], [[3, 3, -1, -1], [7, 3, -1, -2], [10, 2, 0, -3]]], [[[[26, 8.5, 6.5, 15.5, 7.5], [30, 7.5, 1.5, 37.5, 10.5], [23, -2.0, 9.0, -1.5, 18.0]], 2.0, 3], [[23, 2, -1, 1], [26, 2, 1, 0], [30, 2, 0, 0]]], [[[[34, -9.5, -9.0, -5.5, 0.0], [16, -7.0, -1.5, -6.0, -1.0]], 2.0, 3], [[16, 0, -4, -1], [34, 2, -2, -2]]], [[[[9, -8.5, 0.0, -8.0, 0.5], [14, -4.0, -3.0, -3.5, -2.0], [28, -3.0, 8.5, 5.0, 10.5], [29, 7.5, -8.5, 8.5, -7.5]], 1.0, 2], [[9, 0, -9, 0], [14, 0, -4, -3], [28, 1, -2, 4], [29, 0, 7, -9]]]], [[[[[10, 3.0, -5.5, 3.5, -5.0], [21, -1.5, -7.0, 1.5, 2.0], [32, 1.0, 7.0, 4.0, 7.5], [18, -3.5, -6.5, 0.5, -6.0], [29, -5.5, 5.0, 2.5, 6.0], [12, 2.5, -9.0, 32.5, 0.0], [38, 1.5, -7.0, 2.5, -2.0], [19, -1.0, 2.5, -0.5, 4.5]], 2.0, 2], [[10, 0, 1, -3], [12, 1, 0, -3], [18, 1, -1, -2], [19, 0, -1, 1], [21, 1, -1, -2], [29, 1, -2, 1], [32, 1, 0, 1], [38, 1, 0, -2]]], [[[[2, 7.5, 5.0, 37.5, 14.0], [1, -9.0, 2.0, -2.0, 6.0], [5, 3.5, 4.0, 10.5, 9.0], [3, -9.5, -1.0, -7.5, 3.0], [16, -9.0, 8.0, -5.0, 12.0]], 1.0, 2], [[1, 1, -5, 1], [2, 1, 3, 2], [3, 1, -5, -1], [5, 1, 1, 2], [16, 1, -5, 4]]], [[[[20, -9.5, 10.0, -7.5, 19.0], [2, -2.5, -0.5, 5.5, 3.5], [13, -10.0, -2.5, -3.0, -0.5], [24, 2.0, -0.5, 9.0, 1.5], [23, 1.5, 1.0, 5.5, 2.0], [17, -10.0, -8.5, 6.0, -3.5], [1, 2.5, -0.5, 10.5, 0.5], [8, 9.5, 4.0, 13.5, 6.0]], 2.0, 2], [[1, 1, 0, -1], [2, 1, -1, -1], [8, 1, 2, 1], [13, 1, -3, -1], [17, 1, -3, -3], [20, 1, -3, 2], [23, 1, 0, 0], [24, 1, 0, -1]]], [[[[36, 1.0, 10.0, 31.0, 14.0], [27, 9.5, 9.0, 16.5, 13.0], [3, -5.5, 3.0, -2.5, 8.0]], 2.0, 2], [[3, 1, -2, 0], [27, 1, 2, 2], [36, 1, 0, 2]]], [[[[11, -2.0, -6.0, 2.0, -4.0], [16, 6.5, -8.5, 13.5, -3.5], [6, -2.5, 4.0, 5.5, 5.0], [2, 7.0, 2.5, 9.0, 3.0], [38, 10.0, -6.5, 10.5, -4.5]], 1.0, 5], [[2, 1, 3, 1], [6, 3, -1, 0], [11, 2, -1, -2], [16, 3, 0, -2], [38, 1, 5, -4]]], [[[[19, -9.5, -0.5, -8.5, 0.0], [25, 6.0, -9.0, 7.0, -8.5]], 2.0, 2], [[19, 0, -5, -1], [25, 0, 3, -5]]], [[[[10, 0.0, -1.5, 4.0, 0.5], [30, -10.0, -9.5, -7.0, -8.5], [33, 5.5, 0.0, 6.0, 9.0], [3, -6.0, -3.5, -5.5, -1.5], [7, 2.0, 8.0, 32.0, 9.0], [19, -1.0, 2.0, 29.0, 7.0], [22, -5.0, 3.5, 2.0, 4.5], [28, 5.0, 7.5, 9.0, 11.5]], 2.0, 3], [[3, 0, -3, -2], [7, 2, 0, 1], [10, 1, 0, -1], [19, 2, -1, 0], [22, 2, -1, 0], [28, 1, 1, 1], [30, 1, -3, -3], [33, 2, 0, 0]]], [[[[23, 3.0, 0.5, 5.0, 9.5], [2, -3.5, 9.0, -2.5, 14.0], [13, 0.0, -4.0, 2.0, 5.0], [37, -3.5, 7.5, 12.5, 16.5], [8, 8.0, 7.0, 15.0, 12.0], [7, 8.0, 1.5, 12.0, 6.5], [18, -7.5, 7.0, 8.5, 9.0], [38, 0.5, 4.5, 8.5, 6.5], [17, 6.5, 3.5, 36.5, 4.0]], 1.0, 3], [[2, 2, -1, 2], [7, 2, 2, 0], [8, 2, 2, 1], [13, 2, 0, -1], [17, 2, 1, 0], [18, 2, -2, 1], [23, 2, 0, 0], [37, 2, -1, 1], [38, 2, 0, 1]]]], [[[[[35, -2.5, 5.5, 1.5, 9.5], [3, -2.0, 3.0, 1.0, 8.0], [12, 8.5, 4.0, 38.5, 13.0]], 1.0, 3], [[3, 2, -1, 0], [12, 2, 2, 1], [35, 2, -1, 1]]], [[[[29, -2.5, -5.0, 0.5, 0.0], [1, -6.0, -9.0, 10.0, -5.0]], 1.0, 3], [[1, 2, -2, -3], [29, 2, -1, -2]]], [[[[28, -3.0, 1.5, 1.0, 2.5], [31, 3.5, 7.5, 5.5, 9.5], [1, 1.0, -7.0, 3.0, -6.5], [27, -5.0, 7.0, 3.0, 7.5], [9, 6.0, 10.0, 10.0, 19.0], [32, 6.5, 9.5, 36.5, 10.0], [36, 4.5, 7.0, 5.5, 12.0]], 1.0, 3], [[1, 1, 0, -4], [9, 2, 1, 2], [27, 2, -2, 1], [28, 2, -1, 0], [31, 1, 1, 3], [32, 2, 1, 2], [36, 2, 1, 1]]], [[[[14, 1.5, -4.5, 2.5, -4.0], [4, -2.0, -6.0, 28.0, -4.0], [17, 3.0, -8.0, 10.0, -4.0], [10, 5.5, -4.5, 6.5, 0.5], [24, -8.0, -5.0, 22.0, -3.0], [35, 0.5, -3.0, 30.5, 1.0], [34, -1.5, 1.5, 6.5, 2.5], [32, 7.5, 8.0, 14.5, 10.0]], 2.0, 4], [[4, 3, -1, -1], [10, 2, 0, -1], [14, 0, 0, -3], [17, 2, 0, -1], [24, 3, -1, -1], [32, 2, 0, 1], [34, 2, -1, 0], [35, 3, 0, -1]]], [[[[18, -1.5, 8.0, 14.5, 10.0], [26, -5.0, 8.5, -2.0, 13.5], [8, -6.0, 10.0, -5.5, 15.0], [17, -6.0, 8.0, -5.5, 9.0], [36, -3.5, 9.5, 26.5, 10.0], [6, -6.0, 6.5, -2.0, 10.5]], 1.0, 4], [[6, 2, -2, 1], [8, 3, -1, 1], [17, 0, -6, 8], [18, 3, -1, 1], [26, 3, -1, 1], [36, 3, -1, 1]]], [[[[6, 8.0, -5.0, 16.0, -3.0], [23, -7.5, 9.0, -5.5, 18.0], [32, 4.5, 8.5, 12.5, 10.5], [20, -3.0, 5.5, -1.0, 10.5], [13, 5.5, 7.0, 12.5, 11.0], [39, 4.0, -8.0, 12.0, -6.0], [36, 0.5, 4.5, 30.5, 9.5]], 1.0, 2], [[6, 1, 4, -3], [13, 1, 2, 3], [20, 1, -2, 2], [23, 1, -4, 4], [32, 1, 2, 4], [36, 1, 0, 2], [39, 1, 2, -4]]], [[[[28, -2.0, 0.0, 14.0, 9.0], [34, 4.5, 0.5, 5.5, 4.5], [14, 6.5, -10.0, 9.5, -9.5], [20, -0.5, -6.0, 15.5, 3.0], [31, -9.5, 5.5, -1.5, 6.0], [4, -1.5, 9.0, 5.5, 9.5], [23, -4.5, -5.5, 25.5, -3.5]], 1.0, 4], [[4, 3, -1, 1], [14, 2, 1, -3], [20, 3, -1, -1], [23, 3, -1, -1], [28, 3, -1, 0], [31, 3, -2, 0], [34, 2, 1, 0]]], [[[[27, -3.5, 3.5, -3.0, 8.5], [18, 4.5, 9.0, 5.0, 13.0], [13, -2.0, -6.5, 6.0, -4.5], [10, 0.0, -1.0, 3.0, 0.0], [12, -2.0, -1.5, -1.5, 7.5]], 2.0, 5], [[10, 1, 0, -1], [12, 3, -1, -1], [13, 2, -1, -1], [18, 1, 1, 2], [27, 2, -1, 0]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, 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":"A deterministic bounded teaching model with stipulated toy conventions; not a production physics engine or spatial index. 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-collision_detection_broadphase-hierarchical-grid-level-extent-measure","generated_at":"2026-09-29T14:51:00.505304+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Broadphase stages decide which object pairs ever reach narrowphase; a wrong boundary, ordering or bookkeeping rule silently drops real contacts or floods the solver with false candidates.","repair":"Use the larger extent.","root_cause":"ext = min(width, height).","sha256":"f2fa7cce765497b8567cade916c626c37c254e228ca841e4e8b3213213122541","title":"Grid level uses the smaller box extent · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.399,"exit_code":1,"observations":[{"actual":[[4,0,-1,-1],[7,0,-5,-1],[13,2,-1,-1],[16,2,0,0],[27,0,-1,4],[28,1,-1,-2]],"check":"case 0","expected":[[4,0,-1,-1],[7,0,-5,-1],[13,2,-1,-1],[16,3,0,0],[27,0,-1,4],[28,2,-1,-1]],"passed":false},{"actual":[[16,0,-4,0],[20,1,-1,-3]],"check":"case 1","expected":[[16,0,-4,0],[20,2,-1,-2]],"passed":false},{"actual":[[1,2,-1,-2],[15,2,0,-1],[17,1,-2,-1],[26,1,1,-3],[28,1,0,-1],[32,1,-1,2]],"check":"case 2","expected":[[1,3,-1,-1],[15,2,0,-1],[17,1,-2,-1],[26,2,0,-2],[28,1,0,-1],[32,1,-1,2]],"passed":false},{"actual":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"check":"case 3","expected":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"passed":true},{"actual":[[1,1,2,0],[34,2,1,0]],"check":"case 4","expected":[[1,1,2,0],[34,2,1,0]],"passed":true},{"actual":[[4,3,0,-1],[8,3,0,-1],[11,2,0,1],[29,0,-3,4],[39,1,-1,1]],"check":"case 5","expected":[[4,3,0,-1],[8,3,0,-1],[11,2,0,1],[29,0,-3,4],[39,2,-1,0]],"passed":false},{"actual":[[5,4,-1,0],[14,2,0,-1],[22,4,0,-1],[31,4,0,-1],[37,4,-1,0]],"check":"case 6","expected":[[5,4,-1,0],[14,2,0,-1],[22,4,0,-1],[31,4,0,-1],[37,4,-1,0]],"passed":true},{"actual":[[4,3,-1,0],[14,3,-1,-1],[17,4,0,0],[30,3,-1,1]],"check":"case 7","expected":[[4,3,-1,0],[14,3,-1,-1],[17,4,0,0],[30,4,-1,0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 2, 0, 0], [27, 0, -1, 4], [28, 1, -1, -2]], \"expected\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [[16, 0, -4, 0], [20, 1, -1, -3]], \"expected\": [[16, 0, -4, 0], [20, 2, -1, -2]], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [[1, 2, -1, -2], [15, 2, 0, -1], [17, 1, -2, -1], [26, 1, 1, -3], [28, 1, 0, -1], [32, 1, -1, 2]], \"expected\": [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]], \"passed\": false}, {\"check\": \"case 3\", \"actual\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"expected\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"expected\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 1, -1, 1]], \"expected\": [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]], \"expected\": [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]], \"passed\": true}, {\"check\": \"case 7\", \"actual\": [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 3, -1, 1]], \"expected\": [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.764,"exit_code":1,"observations":[{"actual":[[4,0,-1,-1],[7,0,-5,-1],[13,0,-4,-1],[16,1,1,0],[27,0,-1,4],[28,0,-1,-3]],"check":"case 0","expected":[[4,0,-1,-1],[7,0,-5,-1],[13,2,-1,-1],[16,3,0,0],[27,0,-1,4],[28,2,-1,-1]],"passed":false},{"actual":[[16,0,-4,0],[20,0,-2,-5]],"check":"case 1","expected":[[16,0,-4,0],[20,2,-1,-2]],"passed":false},{"actual":[[1,1,-2,-3],[15,2,0,-1],[17,0,-4,-2],[26,0,3,-5],[28,1,0,-1],[32,0,-1,4]],"check":"case 2","expected":[[1,3,-1,-1],[15,2,0,-1],[17,1,-2,-1],[26,2,0,-2],[28,1,0,-1],[32,1,-1,2]],"passed":false},{"actual":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"check":"case 3","expected":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"passed":true},{"actual":[[1,1,2,0],[34,2,1,0]],"check":"case 4","expected":[[1,1,2,0],[34,2,1,0]],"passed":true},{"actual":[[4,0,0,-2],[8,1,0,-2],[11,1,0,2],[29,0,-3,4],[39,0,-1,3]],"check":"case 5","expected":[[4,3,0,-1],[8,3,0,-1],[11,2,0,1],[29,0,-3,4],[39,2,-1,0]],"passed":false},{"actual":[[5,3,-1,0],[14,1,1,-2],[22,1,0,-5],[31,1,3,-3],[37,3,-1,1]],"check":"case 6","expected":[[5,4,-1,0],[14,2,0,-1],[22,4,0,-1],[31,4,0,-1],[37,4,-1,0]],"passed":false},{"actual":[[4,1,-4,0],[14,2,-2,-2],[17,0,3,9],[30,3,-1,1]],"check":"case 7","expected":[[4,3,-1,0],[14,3,-1,-1],[17,4,0,0],[30,4,-1,0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 0, -4, -1], [16, 1, 1, 0], [27, 0, -1, 4], [28, 0, -1, -3]], \"expected\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [[16, 0, -4, 0], [20, 0, -2, -5]], \"expected\": [[16, 0, -4, 0], [20, 2, -1, -2]], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [[1, 1, -2, -3], [15, 2, 0, -1], [17, 0, -4, -2], [26, 0, 3, -5], [28, 1, 0, -1], [32, 0, -1, 4]], \"expected\": [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]], \"passed\": false}, {\"check\": \"case 3\", \"actual\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"expected\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"expected\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [[4, 0, 0, -2], [8, 1, 0, -2], [11, 1, 0, 2], [29, 0, -3, 4], [39, 0, -1, 3]], \"expected\": [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [[5, 3, -1, 0], [14, 1, 1, -2], [22, 1, 0, -5], [31, 1, 3, -3], [37, 3, -1, 1]], \"expected\": [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [[4, 1, -4, 0], [14, 2, -2, -2], [17, 0, 3, 9], [30, 3, -1, 1]], \"expected\": [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.988,"exit_code":0,"observations":[{"actual":[[4,0,-1,-1],[7,0,-5,-1],[13,2,-1,-1],[16,3,0,0],[27,0,-1,4],[28,2,-1,-1]],"check":"case 0","expected":[[4,0,-1,-1],[7,0,-5,-1],[13,2,-1,-1],[16,3,0,0],[27,0,-1,4],[28,2,-1,-1]],"passed":true},{"actual":[[16,0,-4,0],[20,2,-1,-2]],"check":"case 1","expected":[[16,0,-4,0],[20,2,-1,-2]],"passed":true},{"actual":[[1,3,-1,-1],[15,2,0,-1],[17,1,-2,-1],[26,2,0,-2],[28,1,0,-1],[32,1,-1,2]],"check":"case 2","expected":[[1,3,-1,-1],[15,2,0,-1],[17,1,-2,-1],[26,2,0,-2],[28,1,0,-1],[32,1,-1,2]],"passed":true},{"actual":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"check":"case 3","expected":[[2,1,4,1],[27,1,4,3],[34,1,3,-5],[37,1,-1,1]],"passed":true},{"actual":[[1,1,2,0],[34,2,1,0]],"check":"case 4","expected":[[1,1,2,0],[34,2,1,0]],"passed":true},{"actual":[[4,3,0,-1],[8,3,0,-1],[11,2,0,1],[29,0,-3,4],[39,2,-1,0]],"check":"case 5","expected":[[4,3,0,-1],[8,3,0,-1],[11,2,0,1],[29,0,-3,4],[39,2,-1,0]],"passed":true},{"actual":[[5,4,-1,0],[14,2,0,-1],[22,4,0,-1],[31,4,0,-1],[37,4,-1,0]],"check":"case 6","expected":[[5,4,-1,0],[14,2,0,-1],[22,4,0,-1],[31,4,0,-1],[37,4,-1,0]],"passed":true},{"actual":[[4,3,-1,0],[14,3,-1,-1],[17,4,0,0],[30,4,-1,0]],"check":"case 7","expected":[[4,3,-1,0],[14,3,-1,-1],[17,4,0,0],[30,4,-1,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]], \"expected\": [[4, 0, -1, -1], [7, 0, -5, -1], [13, 2, -1, -1], [16, 3, 0, 0], [27, 0, -1, 4], [28, 2, -1, -1]], \"passed\": true}, {\"check\": \"case 1\", \"actual\": [[16, 0, -4, 0], [20, 2, -1, -2]], \"expected\": [[16, 0, -4, 0], [20, 2, -1, -2]], \"passed\": true}, {\"check\": \"case 2\", \"actual\": [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]], \"expected\": [[1, 3, -1, -1], [15, 2, 0, -1], [17, 1, -2, -1], [26, 2, 0, -2], [28, 1, 0, -1], [32, 1, -1, 2]], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"expected\": [[2, 1, 4, 1], [27, 1, 4, 3], [34, 1, 3, -5], [37, 1, -1, 1]], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"expected\": [[1, 1, 2, 0], [34, 2, 1, 0]], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]], \"expected\": [[4, 3, 0, -1], [8, 3, 0, -1], [11, 2, 0, 1], [29, 0, -3, 4], [39, 2, -1, 0]], \"passed\": true}, {\"check\": \"case 6\", \"actual\": [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]], \"expected\": [[5, 4, -1, 0], [14, 2, 0, -1], [22, 4, 0, -1], [31, 4, 0, -1], [37, 4, -1, 0]], \"passed\": true}, {\"check\": \"case 7\", \"actual\": [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]], \"expected\": [[4, 3, -1, 0], [14, 3, -1, -1], [17, 4, 0, 0], [30, 4, -1, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}