FAILURE MAP
← Case archive

FA-87466 / Collision detection broadphase / Open access

BVH query reports node indices instead of leaf ids · case 01

Callers look up the wrong objects for every hit.

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

ROOT CAUSE

hits.append(i) stores the node index.

THE FAILURE

hits.append(i) stores the node index.

Unsuccessful approach: Reporting the child pointer returns -1 for every leaf.

Case contract

solve(nodes, q): BVH nodes [minx,miny,maxx,maxy,left,right,leaf_id], leaves have left=-1; root is node 0. Stack traversal tests every popped node against the closed query box (counting each test) and descends only into overlapping internal nodes. Return [sorted leaf ids overlapping q, number of node tests].

Why this case matters

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.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(nodes, q):
    if not nodes:
        return [[], 0]
    stack = [0]
    hits = []
    tests = 0
    while stack:
        i = stack.pop()
        nd = nodes[i]
        tests += 1
        if not (nd[0] <= q[2] and q[0] <= nd[2] and nd[1] <= q[3] and q[1] <= nd[3]):
            continue
        if nd[4] < 0:
            hits.append(i)
        else:
            stack.append(nd[4])
            stack.append(nd[5])
    return [sorted(hits), tests]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[[9, 8, 10, 8, -1, -1, 100]], [6, 4, 10, 8]], [[100], 1]], [[[[2, 1, 13, 13, 1, 4, -1], [2, 7, 8, 10, 2, 3, -1], [2, 10, 2, 10, -1, -1, 103], [6, 7, 8, 7, -1, -1, 102], [8, 1, 13, 13, 5, 6, -1], [8, 1, 9, 1, -1, -1, 104], [10, 3, 13, 13, 7, 8, -1], [10, 3, 12, 6, -1, -1, 101], [12, 11, 13, 13, -1, -1, 100]], [9, 6, 12, 7]], [[101], 7]], [[[[0, 0, 12, 13, 1, 6, -1], [0, 0, 5, 4, 2, 3, -1], [0, 2, 1, 2, -1, -1, 102], [1, 0, 5, 4, 4, 5, -1], [1, 4, 4, 4, -1, -1, 105], [3, 0, 5, 1, -1, -1, 101], [3, 2, 12, 13, 7, 8, -1], [3, 9, 6, 12, -1, -1, 104], [11, 2, 12, 13, 9, 10, -1], [11, 2, 12, 2, -1, -1, 100], [12, 11, 12, 13, -1, -1, 103]], [9, 11, 11, 12]], [[], 7]], [[[[3, 5, 10, 10, 1, 2, -1], [3, 5, 4, 7, -1, -1, 100], [4, 6, 10, 10, 3, 4, -1], [4, 10, 6, 10, -1, -1, 102], [8, 6, 10, 8, -1, -1, 101]], [3, 3, 6, 4]], [[], 1]], [[[[0, 0, 15, 14, 1, 6, -1], [0, 0, 5, 8, 2, 3, -1], [0, 0, 0, 3, -1, -1, 103], [3, 4, 5, 8, 4, 5, -1], [3, 5, 4, 8, -1, -1, 104], [5, 4, 5, 6, -1, -1, 102], [8, 2, 15, 14, 7, 10, -1], [8, 4, 10, 10, 8, 9, -1], [8, 4, 8, 7, -1, -1, 106], [9, 7, 10, 10, -1, -1, 105], [10, 2, 15, 14, 11, 12, -1], [10, 11, 13, 14, -1, -1, 101], [12, 2, 15, 2, -1, -1, 100]], [12, 4, 12, 7]], [[], 7]], [[[[0, 1, 10, 11, 1, 2, -1], [0, 8, 3, 11, -1, -1, 101], [1, 1, 10, 11, 3, 4, -1], [1, 10, 4, 11, -1, -1, 100], [9, 1, 10, 2, -1, -1, 102]], [1, 11, 1, 11]], [[100, 101], 5]], [[[[0, 3, 14, 14, 1, 2, -1], [0, 3, 2, 4, -1, -1, 102], [6, 3, 14, 14, 3, 4, -1], [6, 11, 7, 14, -1, -1, 101], [11, 3, 14, 5, -1, -1, 100]], [2, 8, 3, 10]], [[], 3]], [[[[1, 2, 12, 5, 1, 4, -1], [1, 3, 11, 5, 2, 3, -1], [1, 3, 4, 4, -1, -1, 101], [8, 5, 11, 5, -1, -1, 102], [9, 2, 12, 5, 5, 6, -1], [10, 2, 10, 4, -1, -1, 100], [9, 2, 12, 5, 7, 8, -1], [9, 2, 11, 5, -1, -1, 104], [12, 4, 12, 4, -1, -1, 103]], [2, 3, 5, 3]], [[101], 5]]], [[[[[3, 0, 13, 12, 1, 6, -1], [3, 0, 7, 12, 2, 3, -1], [3, 0, 3, 1, -1, -1, 103], [4, 8, 7, 12, 4, 5, -1], [4, 8, 7, 10, -1, -1, 100], [4, 9, 7, 12, -1, -1, 101], [8, 2, 13, 7, 7, 8, -1], [9, 4, 10, 7, -1, -1, 102], [8, 2, 13, 6, 9, 10, -1], [8, 3, 11, 6, -1, -1, 105], [11, 2, 13, 5, -1, -1, 104]], [8, 11, 9, 14]], [[], 3]], [[[[1, 5, 11, 8, 1, 2, -1], [1, 5, 4, 7, -1, -1, 100], [10, 5, 11, 8, -1, -1, 101]], [1, 6, 1, 6]], [[100], 3]], [[[[3, 4, 9, 12, 1, 2, -1], [3, 10, 5, 12, -1, -1, 101], [6, 4, 9, 12, 3, 4, -1], [6, 12, 8, 12, -1, -1, 100], [9, 4, 9, 7, -1, -1, 102]], [1, 8, 3, 11]], [[101], 3]], [[[[1, 0, 11, 11, 1, 8, -1], [1, 0, 7, 6, 2, 5, -1], [1, 0, 4, 5, 3, 4, -1], [1, 0, 4, 2, -1, -1, 100], [1, 3, 4, 5, -1, -1, 101], [5, 3, 7, 6, 6, 7, -1], [6, 6, 6, 6, -1, -1, 102], [5, 3, 7, 6, -1, -1, 103], [5, 5, 11, 11, 9, 12, -1], [5, 5, 10, 9, 10, 11, -1], [5, 5, 8, 7, -1, -1, 106], [9, 9, 10, 9, -1, -1, 105], [10, 6, 11, 11, 13, 14, -1], [10, 6, 11, 7, -1, -1, 104], [10, 10, 11, 11, -1, -1, 107]], [10, 11, 12, 14]], [[107], 7]], [[[[1, 1, 15, 12, 1, 6, -1], [1, 6, 4, 12, 2, 3, -1], [1, 12, 4, 12, -1, -1, 103], [1, 6, 4, 10, 4, 5, -1], [1, 9, 4, 10, -1, -1, 105], [3, 6, 3, 6, -1, -1, 104], [3, 1, 15, 6, 7, 8, -1], [3, 6, 4, 6, -1, -1, 100], [5, 1, 15, 5, 9, 10, -1], [5, 1, 5, 3, -1, -1, 102], [12, 4, 15, 5, -1, -1, 101]], [3, 6, 6, 8]], [[100, 104], 9]], [[[[0, 5, 14, 14, 1, 6, -1], [0, 5, 5, 14, 2, 3, -1], [0, 5, 0, 8, -1, -1, 105], [2, 8, 5, 14, 4, 5, -1], [2, 12, 3, 14, -1, -1, 103], [4, 8, 5, 9, -1, -1, 102], [6, 11, 14, 12, 7, 8, -1], [6, 11, 9, 11, -1, -1, 101], [10, 11, 14, 12, 9, 10, -1], [10, 11, 13, 11, -1, -1, 100], [11, 12, 14, 12, -1, -1, 104]], [2, 2, 5, 6]], [[], 5]], [[[[0, 0, 12, 14, 1, 8, -1], [0, 1, 6, 12, 2, 5, -1], [0, 5, 1, 12, 3, 4, -1], [0, 5, 0, 5, -1, -1, 106], [0, 12, 1, 12, -1, -1, 105], [1, 1, 6, 6, 6, 7, -1], [1, 1, 1, 2, -1, -1, 102], [3, 5, 6, 6, -1, -1, 104], [5, 0, 12, 14, 9, 12, -1], [5, 2, 7, 14, 10, 11, -1], [5, 2, 6, 2, -1, -1, 101], [7, 12, 7, 14, -1, -1, 103], [6, 0, 12, 14, 13, 14, -1], [6, 0, 9, 2, -1, -1, 100], [9, 12, 12, 14, -1, -1, 107]], [1, 0, 3, 2]], [[102], 7]], [[[[1, 0, 11, 14, 1, 4, -1], [1, 12, 3, 14, 2, 3, -1], [1, 12, 3, 14, -1, -1, 103], [2, 12, 3, 12, -1, -1, 102], [7, 0, 11, 6, 5, 6, -1], [7, 0, 7, 1, -1, -1, 100], [8, 2, 11, 6, 7, 8, -1], [8, 2, 9, 5, -1, -1, 101], [8, 3, 11, 6, -1, -1, 104]], [5, 10, 6, 10]], [[], 3]]], [[[[[0, 3, 13, 15, 1, 4, -1], [0, 3, 10, 12, 2, 3, -1], [0, 3, 0, 4, -1, -1, 103], [7, 9, 10, 12, -1, -1, 101], [12, 3, 13, 15, 5, 6, -1], [12, 3, 12, 5, -1, -1, 100], [12, 12, 13, 15, -1, -1, 102]], [4, 12, 8, 14]], [[101], 5]], [[[[9, 2, 10, 8, 1, 2, -1], [9, 2, 10, 2, -1, -1, 100], [10, 7, 10, 8, -1, -1, 101]], [3, 6, 4, 7]], [[], 1]], [[[[0, 1, 11, 9, 1, 4, -1], [0, 2, 6, 5, 2, 3, -1], [0, 2, 2, 4, -1, -1, 103], [5, 4, 6, 5, -1, -1, 104], [5, 1, 11, 9, 5, 6, -1], [5, 9, 7, 9, -1, -1, 102], [7, 1, 11, 7, 7, 8, -1], [7, 4, 10, 7, -1, -1, 101], [10, 1, 11, 3, -1, -1, 100]], [7, 1, 7, 3]], [[], 7]], [[[[3, 2, 14, 13, 1, 8, -1], [3, 3, 8, 13, 2, 5, -1], [3, 3, 6, 11, 3, 4, -1], [3, 10, 4, 11, -1, -1, 102], [3, 3, 6, 3, -1, -1, 100], [7, 9, 8, 13, 6, 7, -1], [7, 12, 7, 13, -1, -1, 103], [7, 9, 8, 11, -1, -1, 105], [8, 2, 14, 13, 9, 12, -1], [8, 6, 11, 13, 10, 11, -1], [8, 12, 10, 13, -1, -1, 101], [8, 6, 11, 6, -1, -1, 104], [11, 2, 14, 11, 13, 14, -1], [11, 2, 12, 2, -1, -1, 106], [12, 9, 14, 11, -1, -1, 107]], [12, 1, 15, 4]], [[106], 7]], [[[[0, 0, 14, 11, 1, 8, -1], [0, 4, 2, 11, 2, 5, -1], [0, 6, 2, 9, 3, 4, -1], [0, 6, 1, 9, -1, -1, 106], [0, 9, 2, 9, -1, -1, 104], [1, 4, 2, 11, 6, 7, -1], [1, 8, 2, 11, -1, -1, 101], [1, 4, 2, 6, -1, -1, 107], [2, 0, 14, 11, 9, 12, -1], [2, 0, 6, 11, 10, 11, -1], [2, 0, 4, 1, -1, -1, 105], [6, 10, 6, 11, -1, -1, 100], [8, 1, 14, 10, 13, 14, -1], [8, 2, 9, 4, -1, -1, 103], [9, 1, 14, 10, 15, 16, -1], [9, 9, 12, 10, -1, -1, 108], [11, 1, 14, 1, -1, -1, 102]], [4, 6, 5, 7]], [[], 7]], [[[[0, 0, 13, 11, 1, 6, -1], [0, 0, 3, 9, 2, 3, -1], [0, 6, 0, 9, -1, -1, 100], [1, 0, 3, 4, 4, 5, -1], [1, 0, 3, 1, -1, -1, 105], [2, 2, 2, 4, -1, -1, 106], [2, 2, 13, 11, 7, 10, -1], [2, 2, 4, 8, 8, 9, -1], [3, 2, 3, 2, -1, -1, 103], [2, 8, 4, 8, -1, -1, 104], [3, 6, 13, 11, 11, 12, -1], [3, 6, 5, 8, -1, -1, 101], [12, 10, 13, 11, -1, -1, 102]], [1, 8, 4, 10]], [[101, 104], 11]], [[[[2, 1, 15, 15, 1, 8, -1], [2, 3, 10, 9, 2, 5, -1], [2, 3, 4, 6, 3, 4, -1], [2, 3, 2, 4, -1, -1, 105], [2, 4, 4, 6, -1, -1, 101], [3, 4, 10, 9, 6, 7, -1], [3, 6, 5, 9, -1, -1, 104], [7, 4, 10, 7, -1, -1, 107], [8, 1, 15, 15, 9, 12, -1], [8, 1, 10, 9, 10, 11, -1], [8, 8, 10, 9, -1, -1, 103], [9, 1, 10, 4, -1, -1, 100], [11, 11, 15, 15, 13, 14, -1], [11, 11, 11, 13, -1, -1, 106], [12, 12, 15, 15, -1, -1, 102]], [0, 4, 3, 8]], [[101, 104, 105], 9]], [[[[10, 2, 11, 5, -1, -1, 100]], [0, 11, 3, 14]], [[], 1]]], [[[[[2, 1, 13, 14, 1, 8, -1], [2, 2, 10, 14, 2, 5, -1], [2, 6, 5, 14, 3, 4, -1], [2, 11, 5, 14, -1, -1, 101], [5, 6, 5, 7, -1, -1, 105], [5, 2, 10, 12, 6, 7, -1], [5, 10, 6, 12, -1, -1, 103], [7, 2, 10, 2, -1, -1, 106], [7, 1, 13, 9, 9, 12, -1], [7, 2, 12, 9, 10, 11, -1], [7, 2, 10, 3, -1, -1, 107], [9, 7, 12, 9, -1, -1, 104], [11, 1, 13, 6, 13, 14, -1], [11, 6, 12, 6, -1, -1, 100], [11, 1, 13, 1, -1, -1, 102]], [9, 6, 11, 10]], [[100, 104], 13]], [[[[0, 1, 14, 12, 1, 2, -1], [0, 4, 0, 6, -1, -1, 101], [0, 1, 14, 12, 3, 4, -1], [0, 1, 0, 3, -1, -1, 102], [11, 9, 14, 12, -1, -1, 100]], [8, 11, 10, 11]], [[], 5]], [[[[2, 4, 15, 15, 1, 4, -1], [2, 4, 7, 10, 2, 3, -1], [2, 4, 3, 5, -1, -1, 101], [5, 10, 7, 10, -1, -1, 104], [8, 7, 15, 15, 5, 6, -1], [8, 12, 9, 15, -1, -1, 103], [11, 7, 15, 13, 7, 8, -1], [11, 7, 12, 10, -1, -1, 102], [12, 12, 15, 13, -1, -1, 100]], [6, 7, 6, 10]], [[104], 5]], [[[[0, 0, 12, 12, 1, 8, -1], [0, 4, 11, 12, 2, 5, -1], [0, 4, 0, 7, 3, 4, -1], [0, 4, 0, 5, -1, -1, 102], [0, 6, 0, 7, -1, -1, 104], [8, 5, 11, 12, 6, 7, -1], [8, 5, 9, 5, -1, -1, 105], [8, 10, 11, 12, -1, -1, 106], [9, 0, 12, 11, 9, 12, -1], [9, 0, 11, 4, 10, 11, -1], [10, 2, 10, 4, -1, -1, 100], [9, 0, 11, 0, -1, -1, 101], [9, 8, 12, 11, 13, 14, -1], [9, 8, 11, 11, -1, -1, 103], [11, 11, 12, 11, -1, -1, 107]], [9, 3, 12, 5]], [[100, 105], 11]], [[[[3, 3, 13, 15, 1, 6, -1], [3, 3, 6, 10, 2, 3, -1], [3, 4, 4, 4, -1, -1, 100], [3, 3, 6, 10, 4, 5, -1], [3, 7, 4, 10, -1, -1, 101], [3, 3, 6, 4, -1, -1, 104], [9, 3, 13, 15, 7, 10, -1], [9, 9, 12, 15, 8, 9, -1], [9, 9, 9, 12, -1, -1, 105], [10, 12, 12, 15, -1, -1, 106], [11, 3, 13, 5, 11, 12, -1], [11, 4, 13, 5, -1, -1, 102], [12, 3, 13, 4, -1, -1, 103]], [12, 5, 13, 5]], [[102], 7]], [[[[3, 6, 12, 12, 1, 4, -1], [3, 6, 7, 9, 2, 3, -1], [3, 6, 6, 8, -1, -1, 101], [4, 6, 7, 9, -1, -1, 103], [8, 6, 12, 12, 5, 6, -1], [8, 7, 11, 9, -1, -1, 102], [10, 6, 12, 12, 7, 8, -1], [10, 6, 10, 7, -1, -1, 104], [11, 12, 12, 12, -1, -1, 100]], [10, 6, 13, 9]], [[102, 104], 7]], [[[[0, 1, 15, 12, 1, 8, -1], [0, 1, 9, 11, 2, 5, -1], [0, 1, 4, 4, 3, 4, -1], [0, 1, 0, 4, -1, -1, 106], [4, 1, 4, 3, -1, -1, 100], [6, 1, 9, 11, 6, 7, -1], [6, 11, 9, 11, -1, -1, 105], [7, 1, 9, 2, -1, -1, 104], [7, 3, 15, 12, 9, 12, -1], [7, 10, 10, 12, 10, 11, -1], [7, 12, 9, 12, -1, -1, 107], [7, 10, 10, 12, -1, -1, 101], [10, 3, 15, 12, 13, 14, -1], [10, 11, 13, 12, -1, -1, 103], [12, 3, 15, 7, 15, 16, -1], [12, 5, 15, 7, -1, -1, 102], [12, 3, 15, 5, -1, -1, 108]], [1, 8, 3, 11]], [[], 5]], [[[[0, 1, 13, 13, 1, 10, -1], [0, 1, 7, 10, 2, 5, -1], [0, 3, 2, 9, 3, 4, -1], [0, 8, 1, 9, -1, -1, 102], [2, 3, 2, 5, -1, -1, 103], [4, 1, 7, 10, 6, 7, -1], [4, 8, 7, 10, -1, -1, 104], [5, 1, 7, 8, 8, 9, -1], [5, 5, 7, 8, -1, -1, 100], [6, 1, 7, 4, -1, -1, 109], [7, 1, 13, 13, 11, 14, -1], [7, 8, 8, 11, 12, 13, -1], [7, 8, 7, 11, -1, -1, 101], [7, 8, 8, 11, -1, -1, 107], [7, 1, 13, 13, 15, 16, -1], [7, 6, 9, 6, -1, -1, 108], [9, 1, 13, 13, 17, 18, -1], [9, 10, 10, 13, -1, -1, 106], [12, 1, 13, 4, -1, -1, 105]], [8, 0, 11, 1]], [[], 9]]], [[[[[4, 2, 15, 13, 1, 2, -1], [4, 12, 5, 13, -1, -1, 101], [12, 2, 15, 9, 3, 4, -1], [12, 8, 13, 9, -1, -1, 102], [12, 2, 15, 3, -1, -1, 100]], [8, 2, 9, 5]], [[], 3]], [[[[0, 1, 11, 10, 1, 6, -1], [0, 1, 4, 8, 2, 3, -1], [0, 1, 0, 2, -1, -1, 101], [0, 3, 4, 8, 4, 5, -1], [0, 3, 0, 3, -1, -1, 104], [4, 7, 4, 8, -1, -1, 106], [7, 4, 11, 10, 7, 10, -1], [7, 4, 11, 8, 8, 9, -1], [7, 5, 7, 8, -1, -1, 100], [8, 4, 11, 7, -1, -1, 103], [11, 8, 11, 10, 11, 12, -1], [11, 8, 11, 9, -1, -1, 102], [11, 8, 11, 10, -1, -1, 105]], [2, 7, 5, 7]], [[106], 7]], [[[[0, 1, 11, 13, 1, 10, -1], [0, 2, 5, 12, 2, 5, -1], [0, 4, 5, 12, 3, 4, -1], [0, 10, 3, 12, -1, -1, 102], [2, 4, 5, 5, -1, -1, 104], [3, 2, 5, 8, 6, 7, -1], [3, 2, 5, 2, -1, -1, 101], [4, 5, 5, 8, 8, 9, -1], [4, 7, 4, 7, -1, -1, 108], [4, 5, 5, 8, -1, -1, 103], [4, 1, 11, 13, 11, 14, -1], [4, 2, 8, 13, 12, 13, -1], [4, 2, 6, 2, -1, -1, 106], [6, 12, 8, 13, -1, -1, 105], [9, 1, 11, 4, 15, 16, -1], [9, 4, 9, 4, -1, -1, 100], [9, 1, 11, 4, 17, 18, -1], [9, 3, 9, 4, -1, -1, 109], [9, 1, 11, 1, -1, -1, 107]], [4, 9, 8, 11]], [[], 11]], [[[[0, 0, 15, 13, 1, 8, -1], [0, 1, 5, 11, 2, 5, -1], [0, 1, 3, 10, 3, 4, -1], [0, 1, 2, 2, -1, -1, 101], [1, 7, 3, 10, -1, -1, 102], [2, 6, 5, 11, 6, 7, -1], [2, 9, 2, 11, -1, -1, 106], [4, 6, 5, 6, -1, -1, 103], [5, 0, 15, 13, 9, 12, -1], [5, 0, 8, 13, 10, 11, -1], [5, 10, 6, 13, -1, -1, 104], [5, 0, 8, 1, -1, -1, 100], [7, 0, 15, 3, 13, 14, -1], [7, 3, 8, 3, -1, -1, 107], [12, 0, 15, 3, -1, -1, 105]], [6, 0, 8, 0]], [[100], 9]], [[[[0, 0, 13, 14, 1, 8, -1], [0, 0, 5, 13, 2, 5, -1], [0, 0, 1, 7, 3, 4, -1], [0, 0, 0, 3, -1, -1, 103], [1, 5, 1, 7, -1, -1, 102], [0, 11, 5, 13, 6, 7, -1], [0, 12, 2, 13, -1, -1, 104], [4, 11, 5, 13, -1, -1, 107], [10, 1, 13, 14, 9, 12, -1], [10, 9, 12, 14, 10, 11, -1], [10, 9, 12, 11, -1, -1, 100], [10, 12, 12, 14, -1, -1, 101], [10, 1, 13, 3, 13, 14, -1], [10, 1, 13, 3, -1, -1, 105], [11, 2, 12, 3, 15, 16, -1], [11, 2, 12, 3, -1, -1, 108], [12, 2, 12, 3, -1, -1, 106]], [5, 9, 5, 11]], [[107], 7]], [[[[2, 0, 14, 12, 1, 8, -1], [2, 0, 6, 11, 2, 5, -1], [2, 4, 4, 8, 3, 4, -1], [2, 4, 2, 7, -1, -1, 101], [3, 7, 4, 8, -1, -1, 105], [3, 0, 6, 11, 6, 7, -1], [3, 0, 5, 3, -1, -1, 100], [6, 10, 6, 11, -1, -1, 106], [7, 1, 14, 12, 9, 12, -1], [7, 4, 10, 12, 10, 11, -1], [8, 10, 8, 12, -1, -1, 103], [7, 4, 10, 7, -1, -1, 104], [8, 1, 14, 6, 13, 14, -1], [8, 1, 10, 1, -1, -1, 102], [10, 3, 14, 6, 15, 16, -1], [10, 3, 10, 6, -1, -1, 108], [11, 4, 14, 6, -1, -1, 107]], [1, 2, 2, 6]], [[101], 7]], [[[[12, 12, 12, 12, -1, -1, 100]], [3, 8, 6, 8]], [[], 1]], [[[[0, 0, 15, 12, 1, 6, -1], [0, 2, 3, 12, 2, 3, -1], [0, 11, 3, 12, -1, -1, 101], [0, 2, 3, 10, 4, 5, -1], [0, 7, 3, 10, -1, -1, 106], [3, 2, 3, 5, -1, -1, 105], [4, 0, 15, 10, 7, 10, -1], [4, 3, 10, 10, 8, 9, -1], [4, 3, 6, 5, -1, -1, 103], [7, 8, 10, 10, -1, -1, 102], [9, 0, 15, 8, 11, 12, -1], [9, 5, 10, 8, -1, -1, 100], [12, 0, 15, 1, -1, -1, 104]], [8, 10, 11, 11]], [[102], 7]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("case %d" % i, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
case 0[[0], 1][[100], 1]Failed
case 1[[7], 7][[101], 7]Failed
case 2[[], 7][[], 7]Passed
case 3[[], 1][[], 1]Passed
case 4[[], 7][[], 7]Passed
case 5[[1, 3], 5][[100, 101], 5]Failed
case 6[[], 3][[], 3]Passed
case 7[[2], 5][[101], 5]Failed

SHA-256 / 8c2f2a2ec40286f94d07b276cf47c0d253635999da5a0782561fb122a180fa0d

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(nodes, q):
    if not nodes:
        return [[], 0]
    stack = [0]
    hits = []
    tests = 0
    while stack:
        i = stack.pop()
        nd = nodes[i]
        tests += 1
        if not (nd[0] <= q[2] and q[0] <= nd[2] and nd[1] <= q[3] and q[1] <= nd[3]):
            continue
        if nd[4] < 0:
            hits.append(nd[4])
        else:
            stack.append(nd[4])
            stack.append(nd[5])
    return [sorted(hits), tests]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[[9, 8, 10, 8, -1, -1, 100]], [6, 4, 10, 8]], [[100], 1]], [[[[2, 1, 13, 13, 1, 4, -1], [2, 7, 8, 10, 2, 3, -1], [2, 10, 2, 10, -1, -1, 103], [6, 7, 8, 7, -1, -1, 102], [8, 1, 13, 13, 5, 6, -1], [8, 1, 9, 1, -1, -1, 104], [10, 3, 13, 13, 7, 8, -1], [10, 3, 12, 6, -1, -1, 101], [12, 11, 13, 13, -1, -1, 100]], [9, 6, 12, 7]], [[101], 7]], [[[[0, 0, 12, 13, 1, 6, -1], [0, 0, 5, 4, 2, 3, -1], [0, 2, 1, 2, -1, -1, 102], [1, 0, 5, 4, 4, 5, -1], [1, 4, 4, 4, -1, -1, 105], [3, 0, 5, 1, -1, -1, 101], [3, 2, 12, 13, 7, 8, -1], [3, 9, 6, 12, -1, -1, 104], [11, 2, 12, 13, 9, 10, -1], [11, 2, 12, 2, -1, -1, 100], [12, 11, 12, 13, -1, -1, 103]], [9, 11, 11, 12]], [[], 7]], [[[[3, 5, 10, 10, 1, 2, -1], [3, 5, 4, 7, -1, -1, 100], [4, 6, 10, 10, 3, 4, -1], [4, 10, 6, 10, -1, -1, 102], [8, 6, 10, 8, -1, -1, 101]], [3, 3, 6, 4]], [[], 1]], [[[[0, 0, 15, 14, 1, 6, -1], [0, 0, 5, 8, 2, 3, -1], [0, 0, 0, 3, -1, -1, 103], [3, 4, 5, 8, 4, 5, -1], [3, 5, 4, 8, -1, -1, 104], [5, 4, 5, 6, -1, -1, 102], [8, 2, 15, 14, 7, 10, -1], [8, 4, 10, 10, 8, 9, -1], [8, 4, 8, 7, -1, -1, 106], [9, 7, 10, 10, -1, -1, 105], [10, 2, 15, 14, 11, 12, -1], [10, 11, 13, 14, -1, -1, 101], [12, 2, 15, 2, -1, -1, 100]], [12, 4, 12, 7]], [[], 7]], [[[[0, 1, 10, 11, 1, 2, -1], [0, 8, 3, 11, -1, -1, 101], [1, 1, 10, 11, 3, 4, -1], [1, 10, 4, 11, -1, -1, 100], [9, 1, 10, 2, -1, -1, 102]], [1, 11, 1, 11]], [[100, 101], 5]], [[[[0, 3, 14, 14, 1, 2, -1], [0, 3, 2, 4, -1, -1, 102], [6, 3, 14, 14, 3, 4, -1], [6, 11, 7, 14, -1, -1, 101], [11, 3, 14, 5, -1, -1, 100]], [2, 8, 3, 10]], [[], 3]], [[[[1, 2, 12, 5, 1, 4, -1], [1, 3, 11, 5, 2, 3, -1], [1, 3, 4, 4, -1, -1, 101], [8, 5, 11, 5, -1, -1, 102], [9, 2, 12, 5, 5, 6, -1], [10, 2, 10, 4, -1, -1, 100], [9, 2, 12, 5, 7, 8, -1], [9, 2, 11, 5, -1, -1, 104], [12, 4, 12, 4, -1, -1, 103]], [2, 3, 5, 3]], [[101], 5]]], [[[[[3, 0, 13, 12, 1, 6, -1], [3, 0, 7, 12, 2, 3, -1], [3, 0, 3, 1, -1, -1, 103], [4, 8, 7, 12, 4, 5, -1], [4, 8, 7, 10, -1, -1, 100], [4, 9, 7, 12, -1, -1, 101], [8, 2, 13, 7, 7, 8, -1], [9, 4, 10, 7, -1, -1, 102], [8, 2, 13, 6, 9, 10, -1], [8, 3, 11, 6, -1, -1, 105], [11, 2, 13, 5, -1, -1, 104]], [8, 11, 9, 14]], [[], 3]], [[[[1, 5, 11, 8, 1, 2, -1], [1, 5, 4, 7, -1, -1, 100], [10, 5, 11, 8, -1, -1, 101]], [1, 6, 1, 6]], [[100], 3]], [[[[3, 4, 9, 12, 1, 2, -1], [3, 10, 5, 12, -1, -1, 101], [6, 4, 9, 12, 3, 4, -1], [6, 12, 8, 12, -1, -1, 100], [9, 4, 9, 7, -1, -1, 102]], [1, 8, 3, 11]], [[101], 3]], [[[[1, 0, 11, 11, 1, 8, -1], [1, 0, 7, 6, 2, 5, -1], [1, 0, 4, 5, 3, 4, -1], [1, 0, 4, 2, -1, -1, 100], [1, 3, 4, 5, -1, -1, 101], [5, 3, 7, 6, 6, 7, -1], [6, 6, 6, 6, -1, -1, 102], [5, 3, 7, 6, -1, -1, 103], [5, 5, 11, 11, 9, 12, -1], [5, 5, 10, 9, 10, 11, -1], [5, 5, 8, 7, -1, -1, 106], [9, 9, 10, 9, -1, -1, 105], [10, 6, 11, 11, 13, 14, -1], [10, 6, 11, 7, -1, -1, 104], [10, 10, 11, 11, -1, -1, 107]], [10, 11, 12, 14]], [[107], 7]], [[[[1, 1, 15, 12, 1, 6, -1], [1, 6, 4, 12, 2, 3, -1], [1, 12, 4, 12, -1, -1, 103], [1, 6, 4, 10, 4, 5, -1], [1, 9, 4, 10, -1, -1, 105], [3, 6, 3, 6, -1, -1, 104], [3, 1, 15, 6, 7, 8, -1], [3, 6, 4, 6, -1, -1, 100], [5, 1, 15, 5, 9, 10, -1], [5, 1, 5, 3, -1, -1, 102], [12, 4, 15, 5, -1, -1, 101]], [3, 6, 6, 8]], [[100, 104], 9]], [[[[0, 5, 14, 14, 1, 6, -1], [0, 5, 5, 14, 2, 3, -1], [0, 5, 0, 8, -1, -1, 105], [2, 8, 5, 14, 4, 5, -1], [2, 12, 3, 14, -1, -1, 103], [4, 8, 5, 9, -1, -1, 102], [6, 11, 14, 12, 7, 8, -1], [6, 11, 9, 11, -1, -1, 101], [10, 11, 14, 12, 9, 10, -1], [10, 11, 13, 11, -1, -1, 100], [11, 12, 14, 12, -1, -1, 104]], [2, 2, 5, 6]], [[], 5]], [[[[0, 0, 12, 14, 1, 8, -1], [0, 1, 6, 12, 2, 5, -1], [0, 5, 1, 12, 3, 4, -1], [0, 5, 0, 5, -1, -1, 106], [0, 12, 1, 12, -1, -1, 105], [1, 1, 6, 6, 6, 7, -1], [1, 1, 1, 2, -1, -1, 102], [3, 5, 6, 6, -1, -1, 104], [5, 0, 12, 14, 9, 12, -1], [5, 2, 7, 14, 10, 11, -1], [5, 2, 6, 2, -1, -1, 101], [7, 12, 7, 14, -1, -1, 103], [6, 0, 12, 14, 13, 14, -1], [6, 0, 9, 2, -1, -1, 100], [9, 12, 12, 14, -1, -1, 107]], [1, 0, 3, 2]], [[102], 7]], [[[[1, 0, 11, 14, 1, 4, -1], [1, 12, 3, 14, 2, 3, -1], [1, 12, 3, 14, -1, -1, 103], [2, 12, 3, 12, -1, -1, 102], [7, 0, 11, 6, 5, 6, -1], [7, 0, 7, 1, -1, -1, 100], [8, 2, 11, 6, 7, 8, -1], [8, 2, 9, 5, -1, -1, 101], [8, 3, 11, 6, -1, -1, 104]], [5, 10, 6, 10]], [[], 3]]], [[[[[0, 3, 13, 15, 1, 4, -1], [0, 3, 10, 12, 2, 3, -1], [0, 3, 0, 4, -1, -1, 103], [7, 9, 10, 12, -1, -1, 101], [12, 3, 13, 15, 5, 6, -1], [12, 3, 12, 5, -1, -1, 100], [12, 12, 13, 15, -1, -1, 102]], [4, 12, 8, 14]], [[101], 5]], [[[[9, 2, 10, 8, 1, 2, -1], [9, 2, 10, 2, -1, -1, 100], [10, 7, 10, 8, -1, -1, 101]], [3, 6, 4, 7]], [[], 1]], [[[[0, 1, 11, 9, 1, 4, -1], [0, 2, 6, 5, 2, 3, -1], [0, 2, 2, 4, -1, -1, 103], [5, 4, 6, 5, -1, -1, 104], [5, 1, 11, 9, 5, 6, -1], [5, 9, 7, 9, -1, -1, 102], [7, 1, 11, 7, 7, 8, -1], [7, 4, 10, 7, -1, -1, 101], [10, 1, 11, 3, -1, -1, 100]], [7, 1, 7, 3]], [[], 7]], [[[[3, 2, 14, 13, 1, 8, -1], [3, 3, 8, 13, 2, 5, -1], [3, 3, 6, 11, 3, 4, -1], [3, 10, 4, 11, -1, -1, 102], [3, 3, 6, 3, -1, -1, 100], [7, 9, 8, 13, 6, 7, -1], [7, 12, 7, 13, -1, -1, 103], [7, 9, 8, 11, -1, -1, 105], [8, 2, 14, 13, 9, 12, -1], [8, 6, 11, 13, 10, 11, -1], [8, 12, 10, 13, -1, -1, 101], [8, 6, 11, 6, -1, -1, 104], [11, 2, 14, 11, 13, 14, -1], [11, 2, 12, 2, -1, -1, 106], [12, 9, 14, 11, -1, -1, 107]], [12, 1, 15, 4]], [[106], 7]], [[[[0, 0, 14, 11, 1, 8, -1], [0, 4, 2, 11, 2, 5, -1], [0, 6, 2, 9, 3, 4, -1], [0, 6, 1, 9, -1, -1, 106], [0, 9, 2, 9, -1, -1, 104], [1, 4, 2, 11, 6, 7, -1], [1, 8, 2, 11, -1, -1, 101], [1, 4, 2, 6, -1, -1, 107], [2, 0, 14, 11, 9, 12, -1], [2, 0, 6, 11, 10, 11, -1], [2, 0, 4, 1, -1, -1, 105], [6, 10, 6, 11, -1, -1, 100], [8, 1, 14, 10, 13, 14, -1], [8, 2, 9, 4, -1, -1, 103], [9, 1, 14, 10, 15, 16, -1], [9, 9, 12, 10, -1, -1, 108], [11, 1, 14, 1, -1, -1, 102]], [4, 6, 5, 7]], [[], 7]], [[[[0, 0, 13, 11, 1, 6, -1], [0, 0, 3, 9, 2, 3, -1], [0, 6, 0, 9, -1, -1, 100], [1, 0, 3, 4, 4, 5, -1], [1, 0, 3, 1, -1, -1, 105], [2, 2, 2, 4, -1, -1, 106], [2, 2, 13, 11, 7, 10, -1], [2, 2, 4, 8, 8, 9, -1], [3, 2, 3, 2, -1, -1, 103], [2, 8, 4, 8, -1, -1, 104], [3, 6, 13, 11, 11, 12, -1], [3, 6, 5, 8, -1, -1, 101], [12, 10, 13, 11, -1, -1, 102]], [1, 8, 4, 10]], [[101, 104], 11]], [[[[2, 1, 15, 15, 1, 8, -1], [2, 3, 10, 9, 2, 5, -1], [2, 3, 4, 6, 3, 4, -1], [2, 3, 2, 4, -1, -1, 105], [2, 4, 4, 6, -1, -1, 101], [3, 4, 10, 9, 6, 7, -1], [3, 6, 5, 9, -1, -1, 104], [7, 4, 10, 7, -1, -1, 107], [8, 1, 15, 15, 9, 12, -1], [8, 1, 10, 9, 10, 11, -1], [8, 8, 10, 9, -1, -1, 103], [9, 1, 10, 4, -1, -1, 100], [11, 11, 15, 15, 13, 14, -1], [11, 11, 11, 13, -1, -1, 106], [12, 12, 15, 15, -1, -1, 102]], [0, 4, 3, 8]], [[101, 104, 105], 9]], [[[[10, 2, 11, 5, -1, -1, 100]], [0, 11, 3, 14]], [[], 1]]], [[[[[2, 1, 13, 14, 1, 8, -1], [2, 2, 10, 14, 2, 5, -1], [2, 6, 5, 14, 3, 4, -1], [2, 11, 5, 14, -1, -1, 101], [5, 6, 5, 7, -1, -1, 105], [5, 2, 10, 12, 6, 7, -1], [5, 10, 6, 12, -1, -1, 103], [7, 2, 10, 2, -1, -1, 106], [7, 1, 13, 9, 9, 12, -1], [7, 2, 12, 9, 10, 11, -1], [7, 2, 10, 3, -1, -1, 107], [9, 7, 12, 9, -1, -1, 104], [11, 1, 13, 6, 13, 14, -1], [11, 6, 12, 6, -1, -1, 100], [11, 1, 13, 1, -1, -1, 102]], [9, 6, 11, 10]], [[100, 104], 13]], [[[[0, 1, 14, 12, 1, 2, -1], [0, 4, 0, 6, -1, -1, 101], [0, 1, 14, 12, 3, 4, -1], [0, 1, 0, 3, -1, -1, 102], [11, 9, 14, 12, -1, -1, 100]], [8, 11, 10, 11]], [[], 5]], [[[[2, 4, 15, 15, 1, 4, -1], [2, 4, 7, 10, 2, 3, -1], [2, 4, 3, 5, -1, -1, 101], [5, 10, 7, 10, -1, -1, 104], [8, 7, 15, 15, 5, 6, -1], [8, 12, 9, 15, -1, -1, 103], [11, 7, 15, 13, 7, 8, -1], [11, 7, 12, 10, -1, -1, 102], [12, 12, 15, 13, -1, -1, 100]], [6, 7, 6, 10]], [[104], 5]], [[[[0, 0, 12, 12, 1, 8, -1], [0, 4, 11, 12, 2, 5, -1], [0, 4, 0, 7, 3, 4, -1], [0, 4, 0, 5, -1, -1, 102], [0, 6, 0, 7, -1, -1, 104], [8, 5, 11, 12, 6, 7, -1], [8, 5, 9, 5, -1, -1, 105], [8, 10, 11, 12, -1, -1, 106], [9, 0, 12, 11, 9, 12, -1], [9, 0, 11, 4, 10, 11, -1], [10, 2, 10, 4, -1, -1, 100], [9, 0, 11, 0, -1, -1, 101], [9, 8, 12, 11, 13, 14, -1], [9, 8, 11, 11, -1, -1, 103], [11, 11, 12, 11, -1, -1, 107]], [9, 3, 12, 5]], [[100, 105], 11]], [[[[3, 3, 13, 15, 1, 6, -1], [3, 3, 6, 10, 2, 3, -1], [3, 4, 4, 4, -1, -1, 100], [3, 3, 6, 10, 4, 5, -1], [3, 7, 4, 10, -1, -1, 101], [3, 3, 6, 4, -1, -1, 104], [9, 3, 13, 15, 7, 10, -1], [9, 9, 12, 15, 8, 9, -1], [9, 9, 9, 12, -1, -1, 105], [10, 12, 12, 15, -1, -1, 106], [11, 3, 13, 5, 11, 12, -1], [11, 4, 13, 5, -1, -1, 102], [12, 3, 13, 4, -1, -1, 103]], [12, 5, 13, 5]], [[102], 7]], [[[[3, 6, 12, 12, 1, 4, -1], [3, 6, 7, 9, 2, 3, -1], [3, 6, 6, 8, -1, -1, 101], [4, 6, 7, 9, -1, -1, 103], [8, 6, 12, 12, 5, 6, -1], [8, 7, 11, 9, -1, -1, 102], [10, 6, 12, 12, 7, 8, -1], [10, 6, 10, 7, -1, -1, 104], [11, 12, 12, 12, -1, -1, 100]], [10, 6, 13, 9]], [[102, 104], 7]], [[[[0, 1, 15, 12, 1, 8, -1], [0, 1, 9, 11, 2, 5, -1], [0, 1, 4, 4, 3, 4, -1], [0, 1, 0, 4, -1, -1, 106], [4, 1, 4, 3, -1, -1, 100], [6, 1, 9, 11, 6, 7, -1], [6, 11, 9, 11, -1, -1, 105], [7, 1, 9, 2, -1, -1, 104], [7, 3, 15, 12, 9, 12, -1], [7, 10, 10, 12, 10, 11, -1], [7, 12, 9, 12, -1, -1, 107], [7, 10, 10, 12, -1, -1, 101], [10, 3, 15, 12, 13, 14, -1], [10, 11, 13, 12, -1, -1, 103], [12, 3, 15, 7, 15, 16, -1], [12, 5, 15, 7, -1, -1, 102], [12, 3, 15, 5, -1, -1, 108]], [1, 8, 3, 11]], [[], 5]], [[[[0, 1, 13, 13, 1, 10, -1], [0, 1, 7, 10, 2, 5, -1], [0, 3, 2, 9, 3, 4, -1], [0, 8, 1, 9, -1, -1, 102], [2, 3, 2, 5, -1, -1, 103], [4, 1, 7, 10, 6, 7, -1], [4, 8, 7, 10, -1, -1, 104], [5, 1, 7, 8, 8, 9, -1], [5, 5, 7, 8, -1, -1, 100], [6, 1, 7, 4, -1, -1, 109], [7, 1, 13, 13, 11, 14, -1], [7, 8, 8, 11, 12, 13, -1], [7, 8, 7, 11, -1, -1, 101], [7, 8, 8, 11, -1, -1, 107], [7, 1, 13, 13, 15, 16, -1], [7, 6, 9, 6, -1, -1, 108], [9, 1, 13, 13, 17, 18, -1], [9, 10, 10, 13, -1, -1, 106], [12, 1, 13, 4, -1, -1, 105]], [8, 0, 11, 1]], [[], 9]]], [[[[[4, 2, 15, 13, 1, 2, -1], [4, 12, 5, 13, -1, -1, 101], [12, 2, 15, 9, 3, 4, -1], [12, 8, 13, 9, -1, -1, 102], [12, 2, 15, 3, -1, -1, 100]], [8, 2, 9, 5]], [[], 3]], [[[[0, 1, 11, 10, 1, 6, -1], [0, 1, 4, 8, 2, 3, -1], [0, 1, 0, 2, -1, -1, 101], [0, 3, 4, 8, 4, 5, -1], [0, 3, 0, 3, -1, -1, 104], [4, 7, 4, 8, -1, -1, 106], [7, 4, 11, 10, 7, 10, -1], [7, 4, 11, 8, 8, 9, -1], [7, 5, 7, 8, -1, -1, 100], [8, 4, 11, 7, -1, -1, 103], [11, 8, 11, 10, 11, 12, -1], [11, 8, 11, 9, -1, -1, 102], [11, 8, 11, 10, -1, -1, 105]], [2, 7, 5, 7]], [[106], 7]], [[[[0, 1, 11, 13, 1, 10, -1], [0, 2, 5, 12, 2, 5, -1], [0, 4, 5, 12, 3, 4, -1], [0, 10, 3, 12, -1, -1, 102], [2, 4, 5, 5, -1, -1, 104], [3, 2, 5, 8, 6, 7, -1], [3, 2, 5, 2, -1, -1, 101], [4, 5, 5, 8, 8, 9, -1], [4, 7, 4, 7, -1, -1, 108], [4, 5, 5, 8, -1, -1, 103], [4, 1, 11, 13, 11, 14, -1], [4, 2, 8, 13, 12, 13, -1], [4, 2, 6, 2, -1, -1, 106], [6, 12, 8, 13, -1, -1, 105], [9, 1, 11, 4, 15, 16, -1], [9, 4, 9, 4, -1, -1, 100], [9, 1, 11, 4, 17, 18, -1], [9, 3, 9, 4, -1, -1, 109], [9, 1, 11, 1, -1, -1, 107]], [4, 9, 8, 11]], [[], 11]], [[[[0, 0, 15, 13, 1, 8, -1], [0, 1, 5, 11, 2, 5, -1], [0, 1, 3, 10, 3, 4, -1], [0, 1, 2, 2, -1, -1, 101], [1, 7, 3, 10, -1, -1, 102], [2, 6, 5, 11, 6, 7, -1], [2, 9, 2, 11, -1, -1, 106], [4, 6, 5, 6, -1, -1, 103], [5, 0, 15, 13, 9, 12, -1], [5, 0, 8, 13, 10, 11, -1], [5, 10, 6, 13, -1, -1, 104], [5, 0, 8, 1, -1, -1, 100], [7, 0, 15, 3, 13, 14, -1], [7, 3, 8, 3, -1, -1, 107], [12, 0, 15, 3, -1, -1, 105]], [6, 0, 8, 0]], [[100], 9]], [[[[0, 0, 13, 14, 1, 8, -1], [0, 0, 5, 13, 2, 5, -1], [0, 0, 1, 7, 3, 4, -1], [0, 0, 0, 3, -1, -1, 103], [1, 5, 1, 7, -1, -1, 102], [0, 11, 5, 13, 6, 7, -1], [0, 12, 2, 13, -1, -1, 104], [4, 11, 5, 13, -1, -1, 107], [10, 1, 13, 14, 9, 12, -1], [10, 9, 12, 14, 10, 11, -1], [10, 9, 12, 11, -1, -1, 100], [10, 12, 12, 14, -1, -1, 101], [10, 1, 13, 3, 13, 14, -1], [10, 1, 13, 3, -1, -1, 105], [11, 2, 12, 3, 15, 16, -1], [11, 2, 12, 3, -1, -1, 108], [12, 2, 12, 3, -1, -1, 106]], [5, 9, 5, 11]], [[107], 7]], [[[[2, 0, 14, 12, 1, 8, -1], [2, 0, 6, 11, 2, 5, -1], [2, 4, 4, 8, 3, 4, -1], [2, 4, 2, 7, -1, -1, 101], [3, 7, 4, 8, -1, -1, 105], [3, 0, 6, 11, 6, 7, -1], [3, 0, 5, 3, -1, -1, 100], [6, 10, 6, 11, -1, -1, 106], [7, 1, 14, 12, 9, 12, -1], [7, 4, 10, 12, 10, 11, -1], [8, 10, 8, 12, -1, -1, 103], [7, 4, 10, 7, -1, -1, 104], [8, 1, 14, 6, 13, 14, -1], [8, 1, 10, 1, -1, -1, 102], [10, 3, 14, 6, 15, 16, -1], [10, 3, 10, 6, -1, -1, 108], [11, 4, 14, 6, -1, -1, 107]], [1, 2, 2, 6]], [[101], 7]], [[[[12, 12, 12, 12, -1, -1, 100]], [3, 8, 6, 8]], [[], 1]], [[[[0, 0, 15, 12, 1, 6, -1], [0, 2, 3, 12, 2, 3, -1], [0, 11, 3, 12, -1, -1, 101], [0, 2, 3, 10, 4, 5, -1], [0, 7, 3, 10, -1, -1, 106], [3, 2, 3, 5, -1, -1, 105], [4, 0, 15, 10, 7, 10, -1], [4, 3, 10, 10, 8, 9, -1], [4, 3, 6, 5, -1, -1, 103], [7, 8, 10, 10, -1, -1, 102], [9, 0, 15, 8, 11, 12, -1], [9, 5, 10, 8, -1, -1, 100], [12, 0, 15, 1, -1, -1, 104]], [8, 10, 11, 11]], [[102], 7]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("case %d" % i, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
case 0[[-1], 1][[100], 1]Failed
case 1[[-1], 7][[101], 7]Failed
case 2[[], 7][[], 7]Passed
case 3[[], 1][[], 1]Passed
case 4[[], 7][[], 7]Passed
case 5[[-1, -1], 5][[100, 101], 5]Failed
case 6[[], 3][[], 3]Passed
case 7[[-1], 5][[101], 5]Failed

SHA-256 / c62c37e02bfa4510b0f17d16a69709b79e908b97ae2d23593613fe44dd4b318d

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:59.042346+00:00.

Case digest / 8555dcc476de9b7401a192a21bcc5ae5451ac4e79a0f478be79816583331a5aa