From 91b8a35582b01abc3e059504618359b190206d00 Mon Sep 17 00:00:00 2001 From: Felix Martin Date: Sun, 9 Aug 2026 13:46:08 -0400 Subject: [PATCH] Solve problem 265 --- python/e265.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ python/e336.py | 2 -- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 python/e265.py diff --git a/python/e265.py b/python/e265.py new file mode 100644 index 0000000..b622fd3 --- /dev/null +++ b/python/e265.py @@ -0,0 +1,47 @@ +def is_valid(circle_with_seen, n): + circle, seen = circle_with_seen + if len(circle) < n: + return True + + end = tuple(circle[-n:]) + if end in seen: + return False + seen.add(end) + return True + + +def overlap_valid(circle_with_seen, n): + circle, seen = circle_with_seen + for i in range(1, n): + end = tuple(circle[-i:] + circle[: n - i]) + if end in seen: + return False + seen.add(end) + return True + + +def s(n): + length = 2**n + start = [0 for _ in range(n)] + xs = [(start, set([tuple(start)]))] + for _ in range(length - n): + nxs = [] + for circle, seen in xs: + for d in [0, 1]: + nx = (circle + [d], seen.copy()) + if is_valid(nx, n): + nxs.append(nx) + xs = nxs + circles = [x[0] for x in xs if overlap_valid(x, n)] + return sum(int("".join(map(str, circle)), 2) for circle in circles) + + +def euler_265(): + assert s(3) == 52 + return s(5) + + +if __name__ == "__main__": + solution = euler_265() + print(f"e265.py: {solution}") + assert solution == 209110240768 diff --git a/python/e336.py b/python/e336.py index d13cd5e..5d42f4f 100644 --- a/python/e336.py +++ b/python/e336.py @@ -39,8 +39,6 @@ def get_maximix_arrangements(n: int) -> list: max_xs = [] max_xs_count = 0 for x in xs: - if x[0] == 0 or x[-1] == 0: - continue c = count(x) if c == max_xs_count: max_xs.append(x)