FAILURE MAP
← Case archive

FA-72106 / Error-correcting codes / Open access

Bit flipping stops before checking the last flip · case 01

Words fixed by the final permitted iteration are reported as failures.

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

ROOT CAUSE

The iteration cap is tested before the syndrome, so the result of the last flip is never checked.

VERIFIED REPAIR

Evaluate the syndrome first, then stop if the cap has been reached.

Unsuccessful approach: Looping max_iter times without a final check leaves the same gap.

Case contract

Parallel Gallager bit-flipping decoder. H lists the variable indices of each parity check. In each iteration: if every check is satisfied stop with success; otherwise count, per bit, the unsatisfied checks it joins and flip all bits that reach the maximum count. At most max_iter flipping iterations are performed and the syndrome is checked after the last one. Return [bits, iterations performed, success].

Why this case matters

Hard-decision LDPC decoders in flash controllers use bit flipping as a low-power first pass.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(H, r, max_iter):
    c = list(r)
    for it in range(max_iter + 1):
        if it == max_iter:
            break
        unsat = [chk for chk in H if sum(c[v] for v in chk) % 2]
        if not unsat:
            return [c, it, True]
        cnt = [0] * len(c)
        for chk in unsat:
            for v in chk:
                cnt[v] += 1
        top = max(cnt)
        c = [b ^ 1 if cnt[k] == top else b for k, b in enumerate(c)]
    return [c, max_iter, False]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3], [[0, 1, 1, 0, 0, 1, 1], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1], [[0, 1, 1, 0, 0, 1, 0], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0], [[0, 1, 1, 0, 1, 1, 1], 0, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2], [[1, 1, 1, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0][[0, 0, 0, 0, 0, 0, 0], 0, False][[0, 0, 0, 0, 0, 0, 0], 0, True]Failed
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2][[0, 0, 0, 0, 0, 0, 0], 2, False][[0, 0, 0, 0, 0, 0, 0], 2, True]Failed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3][[0, 0, 0, 0, 0, 0, 0], 2, True][[0, 0, 0, 0, 0, 0, 0], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4][[0, 0, 1, 1, 0, 0, 1], 2, True][[0, 0, 1, 1, 0, 0, 1], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1][[1, 0, 1, 1, 0, 0, 1], 1, False][[1, 0, 1, 1, 0, 0, 1], 1, False]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2][[0, 0, 1, 0, 1, 1], 1, True][[0, 0, 1, 0, 1, 1], 1, True]Passed

SHA-256 / 3fdcac6bf7c30f5e03020c35e9a65e28ace7e7f24f35b16e608fd36095462593

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(H, r, max_iter):
    c = list(r)
    for it in range(max_iter):
        unsat = [chk for chk in H if sum(c[v] for v in chk) % 2]
        if not unsat:
            return [c, it, True]
        if it == max_iter:
            break
        cnt = [0] * len(c)
        for chk in unsat:
            for v in chk:
                cnt[v] += 1
        top = max(cnt)
        c = [b ^ 1 if cnt[k] == top else b for k, b in enumerate(c)]
    return [c, max_iter, False]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3], [[0, 1, 1, 0, 0, 1, 1], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1], [[0, 1, 1, 0, 0, 1, 0], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0], [[0, 1, 1, 0, 1, 1, 1], 0, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2], [[1, 1, 1, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0][[0, 0, 0, 0, 0, 0, 0], 0, False][[0, 0, 0, 0, 0, 0, 0], 0, True]Failed
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2][[0, 0, 0, 0, 0, 0, 0], 2, False][[0, 0, 0, 0, 0, 0, 0], 2, True]Failed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3][[0, 0, 0, 0, 0, 0, 0], 2, True][[0, 0, 0, 0, 0, 0, 0], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4][[0, 0, 1, 1, 0, 0, 1], 2, True][[0, 0, 1, 1, 0, 0, 1], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1][[1, 0, 1, 1, 0, 0, 1], 1, False][[1, 0, 1, 1, 0, 0, 1], 1, False]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2][[0, 0, 1, 0, 1, 1], 1, True][[0, 0, 1, 0, 1, 1], 1, True]Passed

SHA-256 / 6a220ed523a2b553bf1152d6eb5e8f53b13a829b8493e13a91604e622c8d002a

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(H, r, max_iter):
    c = list(r)
    for it in range(max_iter + 1):
        unsat = [chk for chk in H if sum(c[v] for v in chk) % 2]
        if not unsat:
            return [c, it, True]
        if it == max_iter:
            break
        cnt = [0] * len(c)
        for chk in unsat:
            for v in chk:
                cnt[v] += 1
        top = max(cnt)
        c = [b ^ 1 if cnt[k] == top else b for k, b in enumerate(c)]
    return [c, max_iter, False]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 0, 1, 1], 3], [[0, 1, 1, 0, 0, 1, 1], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 1], [[0, 1, 1, 0, 0, 1, 0], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 1, 0, 1, 1, 1], 0], [[0, 1, 1, 0, 1, 1, 1], 0, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [1, 1, 1, 0, 0, 0, 0], 2], [[1, 1, 1, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]]], [['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 3], [[1, 1, 1, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4], [[0, 0, 1, 1, 0, 0, 1], 2, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1], [[1, 0, 1, 1, 0, 0, 1], 1, False]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]]], [['regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 1, 0, 0, 0, 0, 1], 2], [[0, 1, 0, 0, 1, 0, 1], 2, True]], ['regression [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 1, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3]', [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3], [[0, 0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2], [[0, 0, 1, 0, 1, 1], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 1], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 1], 2], [[0, 0, 0, 0, 0, 0], 1, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 0, 0], 4], [[0, 0, 0, 0, 0, 0], 0, True]], ['control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4]', [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [1, 1, 0, 0, 0, 0], 4], [[1, 1, 1, 0, 0, 0], 1, True]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 0][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
regression [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 2][[0, 0, 0, 0, 0, 0, 0], 2, True][[0, 0, 0, 0, 0, 0, 0], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 2][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 1, 0], 3][[0, 0, 0, 0, 0, 0, 0], 2, True][[0, 0, 0, 0, 0, 0, 0], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 0, 0, 1], 4][[0, 0, 1, 1, 0, 0, 1], 2, True][[0, 0, 1, 1, 0, 0, 1], 2, True]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 1, 1, 0, 0], 1][[1, 0, 1, 1, 0, 0, 1], 1, False][[1, 0, 1, 1, 0, 0, 1], 1, False]Passed
control [[[0, 2, 4, 6], [1, 2, 5, 6], [3, 4, 5, 6]], [0, 0, 0, 0, 0, 0, 0], 3][[0, 0, 0, 0, 0, 0, 0], 0, True][[0, 0, 0, 0, 0, 0, 0], 0, True]Passed
control [[[0, 1, 3], [1, 2, 4], [0, 2, 5], [3, 4, 5]], [0, 0, 0, 0, 1, 1], 2][[0, 0, 1, 0, 1, 1], 1, True][[0, 0, 1, 0, 1, 1], 1, True]Passed

SHA-256 / d089958d0ef2cc0f886d848288d8bf97ee078fdfc00f60d167db9ccbfd575229

Verification & scope

A deterministic, bounded teaching model of the named code under the stated contract; not a production codec. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:48:35.514040+00:00.

Case digest / c310c34bc8f8d82c7006fde6ac0ced24ae02a00d3489f6329276999ce2ff07c4