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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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