from algorithms import * def revcat(left: list, right: list) -> list: return left + right[::-1] left = F(75, 31) right = F(31, 75) until = 8 def THING(f, l, until): cyc = doubled_edge_cycle(until).adjacency_matrix() left_ = F(f, l) right_ = F(l, f) head = left_[:2] left = left_[:until] right = right_[:until] for idx, p in enumerate(zip(left[::-1], right[2 + until - len(left):]), 1): if p[1] == p[0]: a = right[idx + until - len(left)] b = left[-idx - 3] if (a + b) % p[1] == 0: if idx == 1: body = revcat(left[2: -idx], right[2:-idx]) else: body = revcat(left[2:-idx] + [p[0]], right[2:-idx]) lst = head + body print(lst, idx) THING(31, 75, 8) THING(37, 17, 8) THING(11, 47, 8) THING(57, 13, 8) THING(3, 23, 8)