FAILURE MAP
← Case archive

FA-72121 / Error-correcting codes / Open access

Code capability weighs errors like erasures · case 01

Patterns with errors are declared decodable beyond the code capability.

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

ROOT CAUSE

The bound is errors + erasures < d; each unknown-position error costs two units of distance.

VERIFIED REPAIR

Require 2 * errors + erasures < d.

Unsuccessful approach: Using <= admits patterns that reach the distance exactly.

Case contract

Given a block code as a list of equal-length codewords (duplicates allowed but ignored; fewer than two distinct words or unequal lengths return None), compute the minimum Hamming distance d, the guaranteed correction capability t = floor((d-1)/2), detection capability d-1, and whether a pattern of the given errors and erasures is decodable (2*errors + erasures < d). Return [d, t, detect, decodable].

Why this case matters

Link and storage designers budget error and erasure correction from the minimum distance.

1 / The failure

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

N = 1
observations = []
def solve(codewords, errors, erasures):
    words = [tuple(w) for w in codewords]
    if len(set(words)) < 2 or len({len(w) for w in words}) != 1:
        return None
    uniq = sorted(set(words))
    d = min(sum(a != b for a, b in zip(u, v)) for i, u in enumerate(uniq) for v in uniq[i + 1:])
    return [d, (d - 1) // 2, d - 1, errors + erasures < d]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, True]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1]], 0, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]]], [['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]], 1, 2], [1, 0, 0, False]]], [['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['control [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, ...', [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 0, 1, 1, 1, 1, 0], [0, 1, 1, 0, 0, 1, 0, 1, 0]], 1, 2], [2, 0, 1, False]], ['control [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0], [5, 2, 4, True]], ['control [[[0, 0, 0], [1, 1, 1]], 1, 0]', [[[0, 0, 0], [1, 1, 1]], 1, 0], [3, 1, 2, True]], ['control [[[0, 0, 0], [1, 1, 1]], 0, 2]', [[[0, 0, 0], [1, 1, 1]], 0, 2], [3, 1, 2, True]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1], [4, 1, 3, True]]], [['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3], [4, 1, 3, True]], ['control [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0]', [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0], [5, 2, 4, True]], ['control [[[0, 1], [0, 1]], 0, 0]', [[[0, 1], [0, 1]], 0, 0], None], ['control [[[0, 1], [1, 0, 1]], 0, 0]', [[[0, 1], [1, 0, 1]], 0, 0], None]], [['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, 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 [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, True][2, 0, 1, False]Failed
regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, True][4, 1, 3, False]Failed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0][1, 0, 0, True][1, 0, 0, True]Passed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...[1, 0, 0, False][1, 0, 0, False]Passed
control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, True][4, 1, 3, True]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, True][2, 0, 1, True]Passed

SHA-256 / 498ab587927bce026395cedb01217419658b618343e4c7cf486e83886d9a8496

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(codewords, errors, erasures):
    words = [tuple(w) for w in codewords]
    if len(set(words)) < 2 or len({len(w) for w in words}) != 1:
        return None
    uniq = sorted(set(words))
    d = min(sum(a != b for a, b in zip(u, v)) for i, u in enumerate(uniq) for v in uniq[i + 1:])
    return [d, (d - 1) // 2, d - 1, 2 * errors + erasures <= d]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, True]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1]], 0, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]]], [['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]], 1, 2], [1, 0, 0, False]]], [['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['control [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, ...', [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 0, 1, 1, 1, 1, 0], [0, 1, 1, 0, 0, 1, 0, 1, 0]], 1, 2], [2, 0, 1, False]], ['control [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0], [5, 2, 4, True]], ['control [[[0, 0, 0], [1, 1, 1]], 1, 0]', [[[0, 0, 0], [1, 1, 1]], 1, 0], [3, 1, 2, True]], ['control [[[0, 0, 0], [1, 1, 1]], 0, 2]', [[[0, 0, 0], [1, 1, 1]], 0, 2], [3, 1, 2, True]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1], [4, 1, 3, True]]], [['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3], [4, 1, 3, True]], ['control [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0]', [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0], [5, 2, 4, True]], ['control [[[0, 1], [0, 1]], 0, 0]', [[[0, 1], [0, 1]], 0, 0], None], ['control [[[0, 1], [1, 0, 1]], 0, 0]', [[[0, 1], [1, 0, 1]], 0, 0], None]], [['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, 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 [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, True][2, 0, 1, False]Failed
regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, True][4, 1, 3, False]Failed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0][1, 0, 0, True][1, 0, 0, True]Passed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...[1, 0, 0, False][1, 0, 0, False]Passed
control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, True][4, 1, 3, True]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, True][2, 0, 1, True]Passed

SHA-256 / dba6f2ce34d11c2493cadf33543c34f3fb9b216341d822c2e29d286e43656ed0

3 / The verified repair

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

N = 1
observations = []
def solve(codewords, errors, erasures):
    words = [tuple(w) for w in codewords]
    if len(set(words)) < 2 or len({len(w) for w in words}) != 1:
        return None
    uniq = sorted(set(words))
    d = min(sum(a != b for a, b in zip(u, v)) for i, u in enumerate(uniq) for v in uniq[i + 1:])
    return [d, (d - 1) // 2, d - 1, 2 * errors + erasures < d]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, True]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1]], 0, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]]], [['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...', [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, 0, 1, 0, 0], [1, 0, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 1]], 0, 0], [2, 0, 1, True]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1]], 1, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0]', [[[0, 1, 0, 0, 1], [0, 0, 0, 0, 1], [0, 1, 0, 0, 1]], 1, 0], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 3], [1, 0, 0, False]], ['control [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, ...', [[[0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 1], [0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]], 1, 2], [1, 0, 0, False]]], [['regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['control [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, ...', [[[0, 1, 1, 0, 0, 1, 0, 1, 0], [1, 1, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 0, 1, 1, 1, 1, 0], [0, 1, 1, 0, 0, 1, 0, 1, 0]], 1, 2], [2, 0, 1, False]], ['control [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 1, 1]], 1, 0], [5, 2, 4, True]], ['control [[[0, 0, 0], [1, 1, 1]], 1, 0]', [[[0, 0, 0], [1, 1, 1]], 1, 0], [3, 1, 2, True]], ['control [[[0, 0, 0], [1, 1, 1]], 0, 2]', [[[0, 0, 0], [1, 1, 1]], 0, 2], [3, 1, 2, True]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 1, 1], [4, 1, 3, True]]], [['regression [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, ...', [[[0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 1], [0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 1], [1, 0, 1, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1]], 1, 1], [3, 1, 2, False]], ['regression [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['partial-repair [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['control [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3]', [[[0, 0, 0, 0], [1, 1, 1, 1]], 0, 3], [4, 1, 3, True]], ['control [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0]', [[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]], 2, 0], [5, 2, 4, True]], ['control [[[0, 1], [0, 1]], 0, 0]', [[[0, 1], [0, 1]], 0, 0], None], ['control [[[0, 1], [1, 0, 1]], 0, 0]', [[[0, 1], [1, 0, 1]], 0, 0], None]], [['regression [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1]', [[[1, 1, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]], 2, 1], [5, 2, 4, False]], ['regression [[[0, 0, 0], [1, 1, 1]], 1, 1]', [[[0, 0, 0], [1, 1, 1]], 1, 1], [3, 1, 2, False]], ['partial-repair [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]], 1, 0], [2, 0, 1, False]], ['partial-repair [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0]], 1, 2], [4, 1, 3, False]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0]', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0], [1, 0, 0, True]], ['control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...', [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1]], 1, 2], [1, 0, 0, False]], ['control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...', [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0, 1, 1, 1, 0]], 2, 3], [2, 0, 1, False]], ['control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...', [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0]], 0, 2], [4, 1, 3, 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 [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, False][2, 0, 1, False]Passed
regression [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, False][4, 1, 3, False]Passed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1]], 0, 0][1, 0, 0, True][1, 0, 0, True]Passed
control [[[1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 0, 1...[1, 0, 0, False][1, 0, 0, False]Passed
control [[[1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 0...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, ...[4, 1, 3, True][4, 1, 3, True]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, False][2, 0, 1, False]Passed
control [[[0, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 0, 1, 1, 1], [0, 0, 1, 0, ...[2, 0, 1, True][2, 0, 1, True]Passed

SHA-256 / c961edec0bf25fdcb5e6ca4c5eb3781161a71a55192d4fc70a8f4a7b29ee9789

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.675540+00:00.

Case digest / a1627afa53ecb3f018141693099603730b325e22646f1554ee7c1134d74ebfd4