diff options
Diffstat (limited to '2024/19/python')
-rw-r--r-- | 2024/19/python/main.py | 40 | ||||
-rw-r--r-- | 2024/19/python/pyproject.toml | 6 |
2 files changed, 0 insertions, 46 deletions
diff --git a/2024/19/python/main.py b/2024/19/python/main.py deleted file mode 100644 index a41156c..0000000 --- a/2024/19/python/main.py +++ /dev/null @@ -1,40 +0,0 @@ -from fileinput import input -from functools import cache -from itertools import takewhile - -inp = map(str.strip, input()) -towels = [t.strip() for t in next(takewhile(bool, inp)).split(",")] -designs = [d for d in inp if d] - -# Construct trie -trie = {} -for towel in towels: - prev = None - curr = trie - for t in towel: - term, succ = curr.setdefault(t, (False, {})) - prev = curr - curr = succ - prev[towel[-1]] = (True, curr) - - -@cache -def steps(design, n=0): - if n == len(design): - return 1 - ways = 0 - curr = trie - for d, s in enumerate(design[n:], start=1): - if s not in curr: - return ways - term, curr = curr[s] - if term: - ways += steps(design, n + d) - return ways - - -silver = sum(map(bool, map(steps, designs))) -gold = sum(map(steps, designs)) - -print("silver:", silver) -print("gold:", gold) diff --git a/2024/19/python/pyproject.toml b/2024/19/python/pyproject.toml deleted file mode 100644 index 539ef74..0000000 --- a/2024/19/python/pyproject.toml +++ /dev/null @@ -1,6 +0,0 @@ -[project] -name = "aoc-2024-19" -version = "0.1.0" -description = "advent of code 2024-19" -requires-python = ">=3.13" -dependencies = [] |