FA-80806 / Bidirectional text layout / Open access
Visual run list for shaping: run sequence reversal · case 01
Visual runs come out in logical order.
ROOT CAUSE
Sequences of runs at or above the level are appended without reversing.
VERIFIED REPAIR
Reverse each maximal sequence of runs at or above the level.
Unsuccessful approach: Reversing only on odd passes leaves even-level nesting in the wrong order.
Case contract
Input resolved levels of a line. Group maximal equal-level runs [logical start, length, level]; reorder whole runs from the highest level down to the lowest odd level by reversing sequences of runs at or above the level. Return [[start, length, "rtl"|"ltr"]] in visual order.
Why this case matters
Mixed right-to-left and left-to-right text must resolve levels and visual order exactly, or words, numbers and carets land in the wrong place.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
levels = x
n = len(levels)
runs = []
for i in range(n):
if runs and runs[-1][2] == levels[i]:
runs[-1][1] += 1
else:
runs.append([i, 1, levels[i]])
if not runs:
return []
odd = [r[2] for r in runs if r[2] % 2]
if odd:
for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
out, i = [], 0
while i < len(runs):
if runs[i][2] >= lev:
j = i
while j < len(runs) and runs[j][2] >= lev:
j += 1
out.extend(runs[i:j])
i = j
else:
out.append(runs[i])
i += 1
runs = out
return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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 |
|---|---|---|---|
| LTR number inside RTL | [[0, 2, 'rtl'], [2, 2, 'ltr'], [4, 1, 'rtl']] | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | Failed |
| regression: run sequence reversal | [[0, 4, 'rtl'], [4, 1, 'ltr'], [5, 2, 'ltr']] | [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']] | Failed |
| regression: run sequence reversal | [[0, 1, 'rtl'], [1, 5, 'ltr'], [6, 2, 'rtl'], [8, 3, 'ltr']] | [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']] | Failed |
| regression: run sequence reversal | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr'], [3, 4, 'rtl']] | [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']] | Failed |
| lowest odd is three | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 5, 'ltr']] | [[0, 2, 'rtl'], [2, 5, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 1, 'ltr']] | [[0, 2, 'rtl'], [2, 1, 'ltr']] | Passed |
SHA-256 / f8b1f8cf0c1597430edfab5aa7c3d9ba299c386e11d4a31b6862a4faff46c663
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
levels = x
n = len(levels)
runs = []
for i in range(n):
if runs and runs[-1][2] == levels[i]:
runs[-1][1] += 1
else:
runs.append([i, 1, levels[i]])
if not runs:
return []
odd = [r[2] for r in runs if r[2] % 2]
if odd:
for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
out, i = [], 0
while i < len(runs):
if runs[i][2] >= lev:
j = i
while j < len(runs) and runs[j][2] >= lev:
j += 1
out.extend(runs[i:j][::-1] if lev % 2 else runs[i:j])
i = j
else:
out.append(runs[i])
i += 1
runs = out
return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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 |
|---|---|---|---|
| LTR number inside RTL | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | Passed |
| regression: run sequence reversal | [[5, 2, 'ltr'], [4, 1, 'ltr'], [0, 4, 'rtl']] | [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']] | Failed |
| regression: run sequence reversal | [[8, 3, 'ltr'], [6, 2, 'rtl'], [1, 5, 'ltr'], [0, 1, 'rtl']] | [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']] | Failed |
| regression: run sequence reversal | [[3, 4, 'rtl'], [0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']] | Failed |
| lowest odd is three | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 5, 'ltr']] | [[0, 2, 'rtl'], [2, 5, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 1, 'ltr']] | [[0, 2, 'rtl'], [2, 1, 'ltr']] | Passed |
SHA-256 / abde1bbb2517f609eb1a548077a10a13696c50434a7c929e2532b8b8150aca33
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
levels = x
n = len(levels)
runs = []
for i in range(n):
if runs and runs[-1][2] == levels[i]:
runs[-1][1] += 1
else:
runs.append([i, 1, levels[i]])
if not runs:
return []
odd = [r[2] for r in runs if r[2] % 2]
if odd:
for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
out, i = [], 0
while i < len(runs):
if runs[i][2] >= lev:
j = i
while j < len(runs) and runs[j][2] >= lev:
j += 1
out.extend(runs[i:j][::-1])
i = j
else:
out.append(runs[i])
i += 1
runs = out
return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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 |
|---|---|---|---|
| LTR number inside RTL | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | Passed |
| regression: run sequence reversal | [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']] | [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']] | Passed |
| regression: run sequence reversal | [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']] | [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']] | Passed |
| regression: run sequence reversal | [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']] | [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']] | Passed |
| lowest odd is three | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 5, 'ltr']] | [[0, 2, 'rtl'], [2, 5, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'rtl'], [2, 1, 'ltr']] | [[0, 2, 'rtl'], [2, 1, 'ltr']] | Passed |
SHA-256 / d5f6f2140cb9a59b1d3febc414fc78ec78f689ceabbc3f95ccd23271824aa50a
Verification & scope
A deterministic toy bidi model over stipulated class labels and integer levels; it is inspired by, but does not claim conformance to, any published algorithm. 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:49:57.371473+00:00.
Case digest / 0079416eb78150158ad9f763e4705ee99554026ac00f0a540e27bfab19190b4f