FA-53266 / Raster memory layout / Open access
Volume Transfer Skip Footprint: Upload row list loses slice gaps or source row padding · case 01
The returned physical layout descriptor disagrees with the declared buffer mapping at source_rows.
ROOT CAUSE
Upload row list loses slice gaps or source row padding The faulty expression is [source_origin+(z*p["height"]+y)*source_row_pitch for z in range(p["depth"]) for y in range(p["height"])].
VERIFIED REPAIR
Apply the stipulated layout rule at source_rows: [source_origin+z*source_slice_pitch+y*source_row_pitch for z in range(p["depth"]) for y in range(p["height"])].
Unsuccessful approach: The attempted repair uses [source_origin+z*source_slice_pitch+y*row_bytes for z in range(p["depth"]) for y in range(p["height"])] and still violates the layout contract.
Case contract
A 3D upload buffer has independently specified row length, image height, and byte pixel size. A valid subvolume starts after skipped images, rows, and pixels. Destination uses independent row and slice pitches; return all per-row transfer origins. Return the named intermediate layout descriptor and final address fields; all quantities are integer byte offsets unless explicitly stated.
Why this case matters
Offline raster resource, upload, readback, and storage-layout regression model.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(p):
p = dict(p)
source_row_pitch = p["row_length"]*p["b"]
source_slice_pitch = source_row_pitch*p["image_height"]
skip_bytes = p["skip_z"]*source_slice_pitch+p["skip_y"]*source_row_pitch+p["skip_x"]*p["b"]
source_origin = p["src"]+skip_bytes
row_bytes = p["width"]*p["b"]
source_rows = [source_origin+(z*p["height"]+y)*source_row_pitch for z in range(p["depth"]) for y in range(p["height"])]
destination_rows = [p["dst"]+z*p["ds"]+y*p["dp"] for z in range(p["depth"]) for y in range(p["height"])]
transfers = [[s,d,row_bytes] for s,d in zip(source_rows,destination_rows)]
source_required = source_rows[-1]+row_bytes-p["src"]
destination_required = destination_rows[-1]+row_bytes-p["dst"]
return {'source_row_pitch': source_row_pitch, 'source_slice_pitch': source_slice_pitch, 'skip_bytes': skip_bytes, 'source_origin': source_origin, 'row_bytes': row_bytes, 'source_rows': source_rows, 'destination_rows': destination_rows, 'transfers': transfers, 'source_required': source_required, 'destination_required': destination_required}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 24, 'source_slice_pitch': 168, 'skip_bytes': 218, 'source_origin': 225, 'row_bytes': 4, 'source_rows': [225], 'destination_rows': [401], 'transfers': [[225, 401, 4]], 'source_required': 222, 'destination_required': 4}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 26, 'source_slice_pitch': 208, 'skip_bytes': 264, 'source_origin': 271, 'row_bytes': 6, 'source_rows': [271, 297, 479, 505], 'destination_rows': [401, 482, 1102, 1183], 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]], 'source_required': 504, 'destination_required': 788}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 28, 'source_slice_pitch': 252, 'skip_bytes': 310, 'source_origin': 317, 'row_bytes': 8, 'source_rows': [317, 345, 373], 'destination_rows': [401, 482, 563], 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]], 'source_required': 374, 'destination_required': 170}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 30, 'source_slice_pitch': 300, 'skip_bytes': 364, 'source_origin': 371, 'row_bytes': 10, 'source_rows': [371, 671], 'destination_rows': [401, 1102], 'transfers': [[371, 401, 10], [671, 1102, 10]], 'source_required': 674, 'destination_required': 711}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 32, 'source_slice_pitch': 352, 'skip_bytes': 418, 'source_origin': 425, 'row_bytes': 12, 'source_rows': [425, 457], 'destination_rows': [401, 482], 'transfers': [[425, 401, 12], [457, 482, 12]], 'source_required': 462, 'destination_required': 93}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 34, 'source_slice_pitch': 408, 'skip_bytes': 480, 'source_origin': 487, 'row_bytes': 14, 'source_rows': [487, 521, 555, 895, 929, 963], 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]], 'source_required': 970, 'destination_required': 877})], 2: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 36, 'source_slice_pitch': 252, 'skip_bytes': 327, 'source_origin': 341, 'row_bytes': 6, 'source_rows': [341], 'destination_rows': [402], 'transfers': [[341, 402, 6]], 'source_required': 333, 'destination_required': 6}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 39, 'source_slice_pitch': 312, 'skip_bytes': 396, 'source_origin': 410, 'row_bytes': 9, 'source_rows': [410, 449, 722, 761], 'destination_rows': [402, 484, 1104, 1186], 'transfers': [[410, 402, 9], [449, 484, 9], [722, 1104, 9], [761, 1186, 9]], 'source_required': 756, 'destination_required': 793}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 42, 'source_slice_pitch': 378, 'skip_bytes': 465, 'source_origin': 479, 'row_bytes': 12, 'source_rows': [479, 521, 563], 'destination_rows': [402, 484, 566], 'transfers': [[479, 402, 12], [521, 484, 12], [563, 566, 12]], 'source_required': 561, 'destination_required': 176}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 45, 'source_slice_pitch': 450, 'skip_bytes': 546, 'source_origin': 560, 'row_bytes': 15, 'source_rows': [560, 1010], 'destination_rows': [402, 1104], 'transfers': [[560, 402, 15], [1010, 1104, 15]], 'source_required': 1011, 'destination_required': 717}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 48, 'source_slice_pitch': 528, 'skip_bytes': 627, 'source_origin': 641, 'row_bytes': 18, 'source_rows': [641, 689], 'destination_rows': [402, 484], 'transfers': [[641, 402, 18], [689, 484, 18]], 'source_required': 693, 'destination_required': 100}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 51, 'source_slice_pitch': 612, 'skip_bytes': 720, 'source_origin': 734, 'row_bytes': 21, 'source_rows': [734, 785, 836, 1346, 1397, 1448], 'destination_rows': [402, 484, 566, 1104, 1186, 1268], 'transfers': [[734, 402, 21], [785, 484, 21], [836, 566, 21], [1346, 1104, 21], [1397, 1186, 21], [1448, 1268, 21]], 'source_required': 1455, 'destination_required': 887})], 3: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 48, 'source_slice_pitch': 336, 'skip_bytes': 436, 'source_origin': 457, 'row_bytes': 8, 'source_rows': [457], 'destination_rows': [403], 'transfers': [[457, 403, 8]], 'source_required': 444, 'destination_required': 8}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 52, 'source_slice_pitch': 416, 'skip_bytes': 528, 'source_origin': 549, 'row_bytes': 12, 'source_rows': [549, 601, 965, 1017], 'destination_rows': [403, 486, 1106, 1189], 'transfers': [[549, 403, 12], [601, 486, 12], [965, 1106, 12], [1017, 1189, 12]], 'source_required': 1008, 'destination_required': 798}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 56, 'source_slice_pitch': 504, 'skip_bytes': 620, 'source_origin': 641, 'row_bytes': 16, 'source_rows': [641, 697, 753], 'destination_rows': [403, 486, 569], 'transfers': [[641, 403, 16], [697, 486, 16], [753, 569, 16]], 'source_required': 748, 'destination_required': 182}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 60, 'source_slice_pitch': 600, 'skip_bytes': 728, 'source_origin': 749, 'row_bytes': 20, 'source_rows': [749, 1349], 'destination_rows': [403, 1106], 'transfers': [[749, 403, 20], [1349, 1106, 20]], 'source_required': 1348, 'destination_required': 723}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 64, 'source_slice_pitch': 704, 'skip_bytes': 836, 'source_origin': 857, 'row_bytes': 24, 'source_rows': [857, 921], 'destination_rows': [403, 486], 'transfers': [[857, 403, 24], [921, 486, 24]], 'source_required': 924, 'destination_required': 107}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 68, 'source_slice_pitch': 816, 'skip_bytes': 960, 'source_origin': 981, 'row_bytes': 28, 'source_rows': [981, 1049, 1117, 1797, 1865, 1933], 'destination_rows': [403, 486, 569, 1106, 1189, 1272], 'transfers': [[981, 403, 28], [1049, 486, 28], [1117, 569, 28], [1797, 1106, 28], [1865, 1189, 28], [1933, 1272, 28]], 'source_required': 1940, 'destination_required': 897})], 4: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 60, 'source_slice_pitch': 420, 'skip_bytes': 545, 'source_origin': 573, 'row_bytes': 10, 'source_rows': [573], 'destination_rows': [404], 'transfers': [[573, 404, 10]], 'source_required': 555, 'destination_required': 10}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 65, 'source_slice_pitch': 520, 'skip_bytes': 660, 'source_origin': 688, 'row_bytes': 15, 'source_rows': [688, 753, 1208, 1273], 'destination_rows': [404, 488, 1108, 1192], 'transfers': [[688, 404, 15], [753, 488, 15], [1208, 1108, 15], [1273, 1192, 15]], 'source_required': 1260, 'destination_required': 803}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 70, 'source_slice_pitch': 630, 'skip_bytes': 775, 'source_origin': 803, 'row_bytes': 20, 'source_rows': [803, 873, 943], 'destination_rows': [404, 488, 572], 'transfers': [[803, 404, 20], [873, 488, 20], [943, 572, 20]], 'source_required': 935, 'destination_required': 188}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 75, 'source_slice_pitch': 750, 'skip_bytes': 910, 'source_origin': 938, 'row_bytes': 25, 'source_rows': [938, 1688], 'destination_rows': [404, 1108], 'transfers': [[938, 404, 25], [1688, 1108, 25]], 'source_required': 1685, 'destination_required': 729}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 80, 'source_slice_pitch': 880, 'skip_bytes': 1045, 'source_origin': 1073, 'row_bytes': 30, 'source_rows': [1073, 1153], 'destination_rows': [404, 488], 'transfers': [[1073, 404, 30], [1153, 488, 30]], 'source_required': 1155, 'destination_required': 114}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 85, 'source_slice_pitch': 1020, 'skip_bytes': 1200, 'source_origin': 1228, 'row_bytes': 35, 'source_rows': [1228, 1313, 1398, 2248, 2333, 2418], 'destination_rows': [404, 488, 572, 1108, 1192, 1276], 'transfers': [[1228, 404, 35], [1313, 488, 35], [1398, 572, 35], [2248, 1108, 35], [2333, 1192, 35], [2418, 1276, 35]], 'source_required': 2425, 'destination_required': 907})], 5: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 72, 'source_slice_pitch': 504, 'skip_bytes': 654, 'source_origin': 689, 'row_bytes': 12, 'source_rows': [689], 'destination_rows': [405], 'transfers': [[689, 405, 12]], 'source_required': 666, 'destination_required': 12}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 78, 'source_slice_pitch': 624, 'skip_bytes': 792, 'source_origin': 827, 'row_bytes': 18, 'source_rows': [827, 905, 1451, 1529], 'destination_rows': [405, 490, 1110, 1195], 'transfers': [[827, 405, 18], [905, 490, 18], [1451, 1110, 18], [1529, 1195, 18]], 'source_required': 1512, 'destination_required': 808}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 84, 'source_slice_pitch': 756, 'skip_bytes': 930, 'source_origin': 965, 'row_bytes': 24, 'source_rows': [965, 1049, 1133], 'destination_rows': [405, 490, 575], 'transfers': [[965, 405, 24], [1049, 490, 24], [1133, 575, 24]], 'source_required': 1122, 'destination_required': 194}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 90, 'source_slice_pitch': 900, 'skip_bytes': 1092, 'source_origin': 1127, 'row_bytes': 30, 'source_rows': [1127, 2027], 'destination_rows': [405, 1110], 'transfers': [[1127, 405, 30], [2027, 1110, 30]], 'source_required': 2022, 'destination_required': 735}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 96, 'source_slice_pitch': 1056, 'skip_bytes': 1254, 'source_origin': 1289, 'row_bytes': 36, 'source_rows': [1289, 1385], 'destination_rows': [405, 490], 'transfers': [[1289, 405, 36], [1385, 490, 36]], 'source_required': 1386, 'destination_required': 121}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 102, 'source_slice_pitch': 1224, 'skip_bytes': 1440, 'source_origin': 1475, 'row_bytes': 42, 'source_rows': [1475, 1577, 1679, 2699, 2801, 2903], 'destination_rows': [405, 490, 575, 1110, 1195, 1280], 'transfers': [[1475, 405, 42], [1577, 490, 42], [1679, 575, 42], [2699, 1110, 42], [2801, 1195, 42], [2903, 1280, 42]], 'source_required': 2910, 'destination_required': 917})]}
for i, (p, expected) in enumerate(cases[N]):
check("layout fixture " + str(i + 1), solve(p), 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 |
|---|---|---|---|
| layout fixture 1 | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | Passed |
| layout fixture 2 | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 348, 'source_row_pitch': 26, 'source_rows': [271, 297, 323, 349], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [297, 482, 6], [323, 1102, 6], [349, 1183, 6]]} | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 504, 'source_row_pitch': 26, 'source_rows': [271, 297, 479, 505], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]]} | Failed |
| layout fixture 3 | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 374, 'source_row_pitch': 28, 'source_rows': [317, 345, 373], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]]} | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 374, 'source_row_pitch': 28, 'source_rows': [317, 345, 373], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]]} | Passed |
| layout fixture 4 | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 404, 'source_row_pitch': 30, 'source_rows': [371, 401], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [401, 1102, 10]]} | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 674, 'source_row_pitch': 30, 'source_rows': [371, 671], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [671, 1102, 10]]} | Failed |
| layout fixture 5 | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 462, 'source_row_pitch': 32, 'source_rows': [425, 457], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [457, 482, 12]]} | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 462, 'source_row_pitch': 32, 'source_rows': [425, 457], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [457, 482, 12]]} | Passed |
| layout fixture 6 | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 664, 'source_row_pitch': 34, 'source_rows': [487, 521, 555, 589, 623, 657], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [589, 1102, 14], [623, 1183, 14], [657, 1264, 14]]} | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 970, 'source_row_pitch': 34, 'source_rows': [487, 521, 555, 895, 929, 963], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]]} | Failed |
SHA-256 / 5f60073bff904689a108ed700d193aac28a04134c8867aac7bb234988cfb1a20
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(p):
p = dict(p)
source_row_pitch = p["row_length"]*p["b"]
source_slice_pitch = source_row_pitch*p["image_height"]
skip_bytes = p["skip_z"]*source_slice_pitch+p["skip_y"]*source_row_pitch+p["skip_x"]*p["b"]
source_origin = p["src"]+skip_bytes
row_bytes = p["width"]*p["b"]
source_rows = [source_origin+z*source_slice_pitch+y*row_bytes for z in range(p["depth"]) for y in range(p["height"])]
destination_rows = [p["dst"]+z*p["ds"]+y*p["dp"] for z in range(p["depth"]) for y in range(p["height"])]
transfers = [[s,d,row_bytes] for s,d in zip(source_rows,destination_rows)]
source_required = source_rows[-1]+row_bytes-p["src"]
destination_required = destination_rows[-1]+row_bytes-p["dst"]
return {'source_row_pitch': source_row_pitch, 'source_slice_pitch': source_slice_pitch, 'skip_bytes': skip_bytes, 'source_origin': source_origin, 'row_bytes': row_bytes, 'source_rows': source_rows, 'destination_rows': destination_rows, 'transfers': transfers, 'source_required': source_required, 'destination_required': destination_required}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 24, 'source_slice_pitch': 168, 'skip_bytes': 218, 'source_origin': 225, 'row_bytes': 4, 'source_rows': [225], 'destination_rows': [401], 'transfers': [[225, 401, 4]], 'source_required': 222, 'destination_required': 4}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 26, 'source_slice_pitch': 208, 'skip_bytes': 264, 'source_origin': 271, 'row_bytes': 6, 'source_rows': [271, 297, 479, 505], 'destination_rows': [401, 482, 1102, 1183], 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]], 'source_required': 504, 'destination_required': 788}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 28, 'source_slice_pitch': 252, 'skip_bytes': 310, 'source_origin': 317, 'row_bytes': 8, 'source_rows': [317, 345, 373], 'destination_rows': [401, 482, 563], 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]], 'source_required': 374, 'destination_required': 170}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 30, 'source_slice_pitch': 300, 'skip_bytes': 364, 'source_origin': 371, 'row_bytes': 10, 'source_rows': [371, 671], 'destination_rows': [401, 1102], 'transfers': [[371, 401, 10], [671, 1102, 10]], 'source_required': 674, 'destination_required': 711}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 32, 'source_slice_pitch': 352, 'skip_bytes': 418, 'source_origin': 425, 'row_bytes': 12, 'source_rows': [425, 457], 'destination_rows': [401, 482], 'transfers': [[425, 401, 12], [457, 482, 12]], 'source_required': 462, 'destination_required': 93}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 34, 'source_slice_pitch': 408, 'skip_bytes': 480, 'source_origin': 487, 'row_bytes': 14, 'source_rows': [487, 521, 555, 895, 929, 963], 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]], 'source_required': 970, 'destination_required': 877})], 2: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 36, 'source_slice_pitch': 252, 'skip_bytes': 327, 'source_origin': 341, 'row_bytes': 6, 'source_rows': [341], 'destination_rows': [402], 'transfers': [[341, 402, 6]], 'source_required': 333, 'destination_required': 6}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 39, 'source_slice_pitch': 312, 'skip_bytes': 396, 'source_origin': 410, 'row_bytes': 9, 'source_rows': [410, 449, 722, 761], 'destination_rows': [402, 484, 1104, 1186], 'transfers': [[410, 402, 9], [449, 484, 9], [722, 1104, 9], [761, 1186, 9]], 'source_required': 756, 'destination_required': 793}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 42, 'source_slice_pitch': 378, 'skip_bytes': 465, 'source_origin': 479, 'row_bytes': 12, 'source_rows': [479, 521, 563], 'destination_rows': [402, 484, 566], 'transfers': [[479, 402, 12], [521, 484, 12], [563, 566, 12]], 'source_required': 561, 'destination_required': 176}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 45, 'source_slice_pitch': 450, 'skip_bytes': 546, 'source_origin': 560, 'row_bytes': 15, 'source_rows': [560, 1010], 'destination_rows': [402, 1104], 'transfers': [[560, 402, 15], [1010, 1104, 15]], 'source_required': 1011, 'destination_required': 717}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 48, 'source_slice_pitch': 528, 'skip_bytes': 627, 'source_origin': 641, 'row_bytes': 18, 'source_rows': [641, 689], 'destination_rows': [402, 484], 'transfers': [[641, 402, 18], [689, 484, 18]], 'source_required': 693, 'destination_required': 100}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 51, 'source_slice_pitch': 612, 'skip_bytes': 720, 'source_origin': 734, 'row_bytes': 21, 'source_rows': [734, 785, 836, 1346, 1397, 1448], 'destination_rows': [402, 484, 566, 1104, 1186, 1268], 'transfers': [[734, 402, 21], [785, 484, 21], [836, 566, 21], [1346, 1104, 21], [1397, 1186, 21], [1448, 1268, 21]], 'source_required': 1455, 'destination_required': 887})], 3: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 48, 'source_slice_pitch': 336, 'skip_bytes': 436, 'source_origin': 457, 'row_bytes': 8, 'source_rows': [457], 'destination_rows': [403], 'transfers': [[457, 403, 8]], 'source_required': 444, 'destination_required': 8}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 52, 'source_slice_pitch': 416, 'skip_bytes': 528, 'source_origin': 549, 'row_bytes': 12, 'source_rows': [549, 601, 965, 1017], 'destination_rows': [403, 486, 1106, 1189], 'transfers': [[549, 403, 12], [601, 486, 12], [965, 1106, 12], [1017, 1189, 12]], 'source_required': 1008, 'destination_required': 798}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 56, 'source_slice_pitch': 504, 'skip_bytes': 620, 'source_origin': 641, 'row_bytes': 16, 'source_rows': [641, 697, 753], 'destination_rows': [403, 486, 569], 'transfers': [[641, 403, 16], [697, 486, 16], [753, 569, 16]], 'source_required': 748, 'destination_required': 182}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 60, 'source_slice_pitch': 600, 'skip_bytes': 728, 'source_origin': 749, 'row_bytes': 20, 'source_rows': [749, 1349], 'destination_rows': [403, 1106], 'transfers': [[749, 403, 20], [1349, 1106, 20]], 'source_required': 1348, 'destination_required': 723}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 64, 'source_slice_pitch': 704, 'skip_bytes': 836, 'source_origin': 857, 'row_bytes': 24, 'source_rows': [857, 921], 'destination_rows': [403, 486], 'transfers': [[857, 403, 24], [921, 486, 24]], 'source_required': 924, 'destination_required': 107}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 68, 'source_slice_pitch': 816, 'skip_bytes': 960, 'source_origin': 981, 'row_bytes': 28, 'source_rows': [981, 1049, 1117, 1797, 1865, 1933], 'destination_rows': [403, 486, 569, 1106, 1189, 1272], 'transfers': [[981, 403, 28], [1049, 486, 28], [1117, 569, 28], [1797, 1106, 28], [1865, 1189, 28], [1933, 1272, 28]], 'source_required': 1940, 'destination_required': 897})], 4: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 60, 'source_slice_pitch': 420, 'skip_bytes': 545, 'source_origin': 573, 'row_bytes': 10, 'source_rows': [573], 'destination_rows': [404], 'transfers': [[573, 404, 10]], 'source_required': 555, 'destination_required': 10}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 65, 'source_slice_pitch': 520, 'skip_bytes': 660, 'source_origin': 688, 'row_bytes': 15, 'source_rows': [688, 753, 1208, 1273], 'destination_rows': [404, 488, 1108, 1192], 'transfers': [[688, 404, 15], [753, 488, 15], [1208, 1108, 15], [1273, 1192, 15]], 'source_required': 1260, 'destination_required': 803}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 70, 'source_slice_pitch': 630, 'skip_bytes': 775, 'source_origin': 803, 'row_bytes': 20, 'source_rows': [803, 873, 943], 'destination_rows': [404, 488, 572], 'transfers': [[803, 404, 20], [873, 488, 20], [943, 572, 20]], 'source_required': 935, 'destination_required': 188}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 75, 'source_slice_pitch': 750, 'skip_bytes': 910, 'source_origin': 938, 'row_bytes': 25, 'source_rows': [938, 1688], 'destination_rows': [404, 1108], 'transfers': [[938, 404, 25], [1688, 1108, 25]], 'source_required': 1685, 'destination_required': 729}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 80, 'source_slice_pitch': 880, 'skip_bytes': 1045, 'source_origin': 1073, 'row_bytes': 30, 'source_rows': [1073, 1153], 'destination_rows': [404, 488], 'transfers': [[1073, 404, 30], [1153, 488, 30]], 'source_required': 1155, 'destination_required': 114}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 85, 'source_slice_pitch': 1020, 'skip_bytes': 1200, 'source_origin': 1228, 'row_bytes': 35, 'source_rows': [1228, 1313, 1398, 2248, 2333, 2418], 'destination_rows': [404, 488, 572, 1108, 1192, 1276], 'transfers': [[1228, 404, 35], [1313, 488, 35], [1398, 572, 35], [2248, 1108, 35], [2333, 1192, 35], [2418, 1276, 35]], 'source_required': 2425, 'destination_required': 907})], 5: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 72, 'source_slice_pitch': 504, 'skip_bytes': 654, 'source_origin': 689, 'row_bytes': 12, 'source_rows': [689], 'destination_rows': [405], 'transfers': [[689, 405, 12]], 'source_required': 666, 'destination_required': 12}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 78, 'source_slice_pitch': 624, 'skip_bytes': 792, 'source_origin': 827, 'row_bytes': 18, 'source_rows': [827, 905, 1451, 1529], 'destination_rows': [405, 490, 1110, 1195], 'transfers': [[827, 405, 18], [905, 490, 18], [1451, 1110, 18], [1529, 1195, 18]], 'source_required': 1512, 'destination_required': 808}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 84, 'source_slice_pitch': 756, 'skip_bytes': 930, 'source_origin': 965, 'row_bytes': 24, 'source_rows': [965, 1049, 1133], 'destination_rows': [405, 490, 575], 'transfers': [[965, 405, 24], [1049, 490, 24], [1133, 575, 24]], 'source_required': 1122, 'destination_required': 194}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 90, 'source_slice_pitch': 900, 'skip_bytes': 1092, 'source_origin': 1127, 'row_bytes': 30, 'source_rows': [1127, 2027], 'destination_rows': [405, 1110], 'transfers': [[1127, 405, 30], [2027, 1110, 30]], 'source_required': 2022, 'destination_required': 735}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 96, 'source_slice_pitch': 1056, 'skip_bytes': 1254, 'source_origin': 1289, 'row_bytes': 36, 'source_rows': [1289, 1385], 'destination_rows': [405, 490], 'transfers': [[1289, 405, 36], [1385, 490, 36]], 'source_required': 1386, 'destination_required': 121}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 102, 'source_slice_pitch': 1224, 'skip_bytes': 1440, 'source_origin': 1475, 'row_bytes': 42, 'source_rows': [1475, 1577, 1679, 2699, 2801, 2903], 'destination_rows': [405, 490, 575, 1110, 1195, 1280], 'transfers': [[1475, 405, 42], [1577, 490, 42], [1679, 575, 42], [2699, 1110, 42], [2801, 1195, 42], [2903, 1280, 42]], 'source_required': 2910, 'destination_required': 917})]}
for i, (p, expected) in enumerate(cases[N]):
check("layout fixture " + str(i + 1), solve(p), 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 |
|---|---|---|---|
| layout fixture 1 | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | Passed |
| layout fixture 2 | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 484, 'source_row_pitch': 26, 'source_rows': [271, 277, 479, 485], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [277, 482, 6], [479, 1102, 6], [485, 1183, 6]]} | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 504, 'source_row_pitch': 26, 'source_rows': [271, 297, 479, 505], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]]} | Failed |
| layout fixture 3 | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 334, 'source_row_pitch': 28, 'source_rows': [317, 325, 333], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [325, 482, 8], [333, 563, 8]]} | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 374, 'source_row_pitch': 28, 'source_rows': [317, 345, 373], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]]} | Failed |
| layout fixture 4 | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 674, 'source_row_pitch': 30, 'source_rows': [371, 671], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [671, 1102, 10]]} | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 674, 'source_row_pitch': 30, 'source_rows': [371, 671], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [671, 1102, 10]]} | Passed |
| layout fixture 5 | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 442, 'source_row_pitch': 32, 'source_rows': [425, 437], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [437, 482, 12]]} | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 462, 'source_row_pitch': 32, 'source_rows': [425, 457], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [457, 482, 12]]} | Failed |
| layout fixture 6 | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 930, 'source_row_pitch': 34, 'source_rows': [487, 501, 515, 895, 909, 923], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [501, 482, 14], [515, 563, 14], [895, 1102, 14], [909, 1183, 14], [923, 1264, 14]]} | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 970, 'source_row_pitch': 34, 'source_rows': [487, 521, 555, 895, 929, 963], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]]} | Failed |
SHA-256 / 03aff276aed102f87f4c365a8ab3f18d4d34e352a845970b194dbad62437fa1c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(p):
p = dict(p)
source_row_pitch = p["row_length"]*p["b"]
source_slice_pitch = source_row_pitch*p["image_height"]
skip_bytes = p["skip_z"]*source_slice_pitch+p["skip_y"]*source_row_pitch+p["skip_x"]*p["b"]
source_origin = p["src"]+skip_bytes
row_bytes = p["width"]*p["b"]
source_rows = [source_origin+z*source_slice_pitch+y*source_row_pitch for z in range(p["depth"]) for y in range(p["height"])]
destination_rows = [p["dst"]+z*p["ds"]+y*p["dp"] for z in range(p["depth"]) for y in range(p["height"])]
transfers = [[s,d,row_bytes] for s,d in zip(source_rows,destination_rows)]
source_required = source_rows[-1]+row_bytes-p["src"]
destination_required = destination_rows[-1]+row_bytes-p["dst"]
return {'source_row_pitch': source_row_pitch, 'source_slice_pitch': source_slice_pitch, 'skip_bytes': skip_bytes, 'source_origin': source_origin, 'row_bytes': row_bytes, 'source_rows': source_rows, 'destination_rows': destination_rows, 'transfers': transfers, 'source_required': source_required, 'destination_required': destination_required}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 24, 'source_slice_pitch': 168, 'skip_bytes': 218, 'source_origin': 225, 'row_bytes': 4, 'source_rows': [225], 'destination_rows': [401], 'transfers': [[225, 401, 4]], 'source_required': 222, 'destination_required': 4}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 26, 'source_slice_pitch': 208, 'skip_bytes': 264, 'source_origin': 271, 'row_bytes': 6, 'source_rows': [271, 297, 479, 505], 'destination_rows': [401, 482, 1102, 1183], 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]], 'source_required': 504, 'destination_required': 788}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 28, 'source_slice_pitch': 252, 'skip_bytes': 310, 'source_origin': 317, 'row_bytes': 8, 'source_rows': [317, 345, 373], 'destination_rows': [401, 482, 563], 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]], 'source_required': 374, 'destination_required': 170}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 30, 'source_slice_pitch': 300, 'skip_bytes': 364, 'source_origin': 371, 'row_bytes': 10, 'source_rows': [371, 671], 'destination_rows': [401, 1102], 'transfers': [[371, 401, 10], [671, 1102, 10]], 'source_required': 674, 'destination_required': 711}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 2, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 32, 'source_slice_pitch': 352, 'skip_bytes': 418, 'source_origin': 425, 'row_bytes': 12, 'source_rows': [425, 457], 'destination_rows': [401, 482], 'transfers': [[425, 401, 12], [457, 482, 12]], 'source_required': 462, 'destination_required': 93}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 2, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 7, 'dst': 401, 'dp': 81, 'ds': 701}, {'source_row_pitch': 34, 'source_slice_pitch': 408, 'skip_bytes': 480, 'source_origin': 487, 'row_bytes': 14, 'source_rows': [487, 521, 555, 895, 929, 963], 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]], 'source_required': 970, 'destination_required': 877})], 2: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 36, 'source_slice_pitch': 252, 'skip_bytes': 327, 'source_origin': 341, 'row_bytes': 6, 'source_rows': [341], 'destination_rows': [402], 'transfers': [[341, 402, 6]], 'source_required': 333, 'destination_required': 6}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 39, 'source_slice_pitch': 312, 'skip_bytes': 396, 'source_origin': 410, 'row_bytes': 9, 'source_rows': [410, 449, 722, 761], 'destination_rows': [402, 484, 1104, 1186], 'transfers': [[410, 402, 9], [449, 484, 9], [722, 1104, 9], [761, 1186, 9]], 'source_required': 756, 'destination_required': 793}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 42, 'source_slice_pitch': 378, 'skip_bytes': 465, 'source_origin': 479, 'row_bytes': 12, 'source_rows': [479, 521, 563], 'destination_rows': [402, 484, 566], 'transfers': [[479, 402, 12], [521, 484, 12], [563, 566, 12]], 'source_required': 561, 'destination_required': 176}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 45, 'source_slice_pitch': 450, 'skip_bytes': 546, 'source_origin': 560, 'row_bytes': 15, 'source_rows': [560, 1010], 'destination_rows': [402, 1104], 'transfers': [[560, 402, 15], [1010, 1104, 15]], 'source_required': 1011, 'destination_required': 717}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 3, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 48, 'source_slice_pitch': 528, 'skip_bytes': 627, 'source_origin': 641, 'row_bytes': 18, 'source_rows': [641, 689], 'destination_rows': [402, 484], 'transfers': [[641, 402, 18], [689, 484, 18]], 'source_required': 693, 'destination_required': 100}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 3, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 14, 'dst': 402, 'dp': 82, 'ds': 702}, {'source_row_pitch': 51, 'source_slice_pitch': 612, 'skip_bytes': 720, 'source_origin': 734, 'row_bytes': 21, 'source_rows': [734, 785, 836, 1346, 1397, 1448], 'destination_rows': [402, 484, 566, 1104, 1186, 1268], 'transfers': [[734, 402, 21], [785, 484, 21], [836, 566, 21], [1346, 1104, 21], [1397, 1186, 21], [1448, 1268, 21]], 'source_required': 1455, 'destination_required': 887})], 3: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 48, 'source_slice_pitch': 336, 'skip_bytes': 436, 'source_origin': 457, 'row_bytes': 8, 'source_rows': [457], 'destination_rows': [403], 'transfers': [[457, 403, 8]], 'source_required': 444, 'destination_required': 8}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 52, 'source_slice_pitch': 416, 'skip_bytes': 528, 'source_origin': 549, 'row_bytes': 12, 'source_rows': [549, 601, 965, 1017], 'destination_rows': [403, 486, 1106, 1189], 'transfers': [[549, 403, 12], [601, 486, 12], [965, 1106, 12], [1017, 1189, 12]], 'source_required': 1008, 'destination_required': 798}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 56, 'source_slice_pitch': 504, 'skip_bytes': 620, 'source_origin': 641, 'row_bytes': 16, 'source_rows': [641, 697, 753], 'destination_rows': [403, 486, 569], 'transfers': [[641, 403, 16], [697, 486, 16], [753, 569, 16]], 'source_required': 748, 'destination_required': 182}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 60, 'source_slice_pitch': 600, 'skip_bytes': 728, 'source_origin': 749, 'row_bytes': 20, 'source_rows': [749, 1349], 'destination_rows': [403, 1106], 'transfers': [[749, 403, 20], [1349, 1106, 20]], 'source_required': 1348, 'destination_required': 723}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 4, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 64, 'source_slice_pitch': 704, 'skip_bytes': 836, 'source_origin': 857, 'row_bytes': 24, 'source_rows': [857, 921], 'destination_rows': [403, 486], 'transfers': [[857, 403, 24], [921, 486, 24]], 'source_required': 924, 'destination_required': 107}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 4, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 21, 'dst': 403, 'dp': 83, 'ds': 703}, {'source_row_pitch': 68, 'source_slice_pitch': 816, 'skip_bytes': 960, 'source_origin': 981, 'row_bytes': 28, 'source_rows': [981, 1049, 1117, 1797, 1865, 1933], 'destination_rows': [403, 486, 569, 1106, 1189, 1272], 'transfers': [[981, 403, 28], [1049, 486, 28], [1117, 569, 28], [1797, 1106, 28], [1865, 1189, 28], [1933, 1272, 28]], 'source_required': 1940, 'destination_required': 897})], 4: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 60, 'source_slice_pitch': 420, 'skip_bytes': 545, 'source_origin': 573, 'row_bytes': 10, 'source_rows': [573], 'destination_rows': [404], 'transfers': [[573, 404, 10]], 'source_required': 555, 'destination_required': 10}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 65, 'source_slice_pitch': 520, 'skip_bytes': 660, 'source_origin': 688, 'row_bytes': 15, 'source_rows': [688, 753, 1208, 1273], 'destination_rows': [404, 488, 1108, 1192], 'transfers': [[688, 404, 15], [753, 488, 15], [1208, 1108, 15], [1273, 1192, 15]], 'source_required': 1260, 'destination_required': 803}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 70, 'source_slice_pitch': 630, 'skip_bytes': 775, 'source_origin': 803, 'row_bytes': 20, 'source_rows': [803, 873, 943], 'destination_rows': [404, 488, 572], 'transfers': [[803, 404, 20], [873, 488, 20], [943, 572, 20]], 'source_required': 935, 'destination_required': 188}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 75, 'source_slice_pitch': 750, 'skip_bytes': 910, 'source_origin': 938, 'row_bytes': 25, 'source_rows': [938, 1688], 'destination_rows': [404, 1108], 'transfers': [[938, 404, 25], [1688, 1108, 25]], 'source_required': 1685, 'destination_required': 729}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 5, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 80, 'source_slice_pitch': 880, 'skip_bytes': 1045, 'source_origin': 1073, 'row_bytes': 30, 'source_rows': [1073, 1153], 'destination_rows': [404, 488], 'transfers': [[1073, 404, 30], [1153, 488, 30]], 'source_required': 1155, 'destination_required': 114}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 5, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 28, 'dst': 404, 'dp': 84, 'ds': 704}, {'source_row_pitch': 85, 'source_slice_pitch': 1020, 'skip_bytes': 1200, 'source_origin': 1228, 'row_bytes': 35, 'source_rows': [1228, 1313, 1398, 2248, 2333, 2418], 'destination_rows': [404, 488, 572, 1108, 1192, 1276], 'transfers': [[1228, 404, 35], [1313, 488, 35], [1398, 572, 35], [2248, 1108, 35], [2333, 1192, 35], [2418, 1276, 35]], 'source_required': 2425, 'destination_required': 907})], 5: [({'width': 2, 'height': 1, 'depth': 1, 'row_length': 12, 'image_height': 7, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 72, 'source_slice_pitch': 504, 'skip_bytes': 654, 'source_origin': 689, 'row_bytes': 12, 'source_rows': [689], 'destination_rows': [405], 'transfers': [[689, 405, 12]], 'source_required': 666, 'destination_required': 12}), ({'width': 3, 'height': 2, 'depth': 2, 'row_length': 13, 'image_height': 8, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 78, 'source_slice_pitch': 624, 'skip_bytes': 792, 'source_origin': 827, 'row_bytes': 18, 'source_rows': [827, 905, 1451, 1529], 'destination_rows': [405, 490, 1110, 1195], 'transfers': [[827, 405, 18], [905, 490, 18], [1451, 1110, 18], [1529, 1195, 18]], 'source_required': 1512, 'destination_required': 808}), ({'width': 4, 'height': 3, 'depth': 1, 'row_length': 14, 'image_height': 9, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 84, 'source_slice_pitch': 756, 'skip_bytes': 930, 'source_origin': 965, 'row_bytes': 24, 'source_rows': [965, 1049, 1133], 'destination_rows': [405, 490, 575], 'transfers': [[965, 405, 24], [1049, 490, 24], [1133, 575, 24]], 'source_required': 1122, 'destination_required': 194}), ({'width': 5, 'height': 1, 'depth': 2, 'row_length': 15, 'image_height': 10, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 90, 'source_slice_pitch': 900, 'skip_bytes': 1092, 'source_origin': 1127, 'row_bytes': 30, 'source_rows': [1127, 2027], 'destination_rows': [405, 1110], 'transfers': [[1127, 405, 30], [2027, 1110, 30]], 'source_required': 2022, 'destination_required': 735}), ({'width': 6, 'height': 2, 'depth': 1, 'row_length': 16, 'image_height': 11, 'b': 6, 'skip_x': 1, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 96, 'source_slice_pitch': 1056, 'skip_bytes': 1254, 'source_origin': 1289, 'row_bytes': 36, 'source_rows': [1289, 1385], 'destination_rows': [405, 490], 'transfers': [[1289, 405, 36], [1385, 490, 36]], 'source_required': 1386, 'destination_required': 121}), ({'width': 7, 'height': 3, 'depth': 2, 'row_length': 17, 'image_height': 12, 'b': 6, 'skip_x': 2, 'skip_y': 2, 'skip_z': 1, 'src': 35, 'dst': 405, 'dp': 85, 'ds': 705}, {'source_row_pitch': 102, 'source_slice_pitch': 1224, 'skip_bytes': 1440, 'source_origin': 1475, 'row_bytes': 42, 'source_rows': [1475, 1577, 1679, 2699, 2801, 2903], 'destination_rows': [405, 490, 575, 1110, 1195, 1280], 'transfers': [[1475, 405, 42], [1577, 490, 42], [1679, 575, 42], [2699, 1110, 42], [2801, 1195, 42], [2903, 1280, 42]], 'source_required': 2910, 'destination_required': 917})]}
for i, (p, expected) in enumerate(cases[N]):
check("layout fixture " + str(i + 1), solve(p), 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 |
|---|---|---|---|
| layout fixture 1 | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | {'destination_required': 4, 'destination_rows': [401], 'row_bytes': 4, 'skip_bytes': 218, 'source_origin': 225, 'source_required': 222, 'source_row_pitch': 24, 'source_rows': [225], 'source_slice_pitch': 168, 'transfers': [[225, 401, 4]]} | Passed |
| layout fixture 2 | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 504, 'source_row_pitch': 26, 'source_rows': [271, 297, 479, 505], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]]} | {'destination_required': 788, 'destination_rows': [401, 482, 1102, 1183], 'row_bytes': 6, 'skip_bytes': 264, 'source_origin': 271, 'source_required': 504, 'source_row_pitch': 26, 'source_rows': [271, 297, 479, 505], 'source_slice_pitch': 208, 'transfers': [[271, 401, 6], [297, 482, 6], [479, 1102, 6], [505, 1183, 6]]} | Passed |
| layout fixture 3 | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 374, 'source_row_pitch': 28, 'source_rows': [317, 345, 373], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]]} | {'destination_required': 170, 'destination_rows': [401, 482, 563], 'row_bytes': 8, 'skip_bytes': 310, 'source_origin': 317, 'source_required': 374, 'source_row_pitch': 28, 'source_rows': [317, 345, 373], 'source_slice_pitch': 252, 'transfers': [[317, 401, 8], [345, 482, 8], [373, 563, 8]]} | Passed |
| layout fixture 4 | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 674, 'source_row_pitch': 30, 'source_rows': [371, 671], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [671, 1102, 10]]} | {'destination_required': 711, 'destination_rows': [401, 1102], 'row_bytes': 10, 'skip_bytes': 364, 'source_origin': 371, 'source_required': 674, 'source_row_pitch': 30, 'source_rows': [371, 671], 'source_slice_pitch': 300, 'transfers': [[371, 401, 10], [671, 1102, 10]]} | Passed |
| layout fixture 5 | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 462, 'source_row_pitch': 32, 'source_rows': [425, 457], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [457, 482, 12]]} | {'destination_required': 93, 'destination_rows': [401, 482], 'row_bytes': 12, 'skip_bytes': 418, 'source_origin': 425, 'source_required': 462, 'source_row_pitch': 32, 'source_rows': [425, 457], 'source_slice_pitch': 352, 'transfers': [[425, 401, 12], [457, 482, 12]]} | Passed |
| layout fixture 6 | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 970, 'source_row_pitch': 34, 'source_rows': [487, 521, 555, 895, 929, 963], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]]} | {'destination_required': 877, 'destination_rows': [401, 482, 563, 1102, 1183, 1264], 'row_bytes': 14, 'skip_bytes': 480, 'source_origin': 487, 'source_required': 970, 'source_row_pitch': 34, 'source_rows': [487, 521, 555, 895, 929, 963], 'source_slice_pitch': 408, 'transfers': [[487, 401, 14], [521, 482, 14], [555, 563, 14], [895, 1102, 14], [929, 1183, 14], [963, 1264, 14]]} | Passed |
SHA-256 / 83bd3b81e54da16fa8c53e2c43ba2f01e21ba59026fd565a9050aac2a7850f80
Verification & scope
Stipulated deterministic toy buffer layout; not a graphics API, codec, GPU vendor tiling specification, or hardware-conformance claim. Inputs satisfy the dimensions and bounds stated by the model. 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:45:37.281496+00:00.
Case digest / 96639cb435487e3079224b7b3d2d85dd94fbd935172b33bb32bef2f93acda2d2