broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']))
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

prompt:
Additive rectangular selection loses prior cells produces the wrong hierarchical widget state in a regression fixture.

A cell range spans visible rows within the anchor sibling group and visible columns; collapsed descendants and other sibling groups are excluded. Disabled rows and protected cells are skipped. Range serialization follows row-major visible order; additive range preserves prior cells.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in reversed(d['rows']) for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for c in cols for r in d['rows'] if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

prompt:
Treegrid range serialization loses row-major order produces the wrong hierarchical widget state in a regression fixture.

A cell range spans visible rows within the anchor sibling group and visible columns; collapsed descendants and other sibling groups are excluded. Disabled rows and protected cells are skipped. Range serialization follows row-major visible order; additive range preserves prior cells.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['anchor_row']+':'+d['anchor_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['anchor_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), 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)

prompt:
Range focus does not reach target cell produces the wrong hierarchical widget state in a regression fixture.

A cell range spans visible rows within the anchor sibling group and visible columns; collapsed descendants and other sibling groups are excluded. Disabled rows and protected cells are skipped. Range serialization follows row-major visible order; additive range preserves prior cells.

split: open-access