From 6b733982f9f240c1c97f1fa705bfbe4cd93c640e Mon Sep 17 00:00:00 2001 From: mhsn Date: Fri, 12 Sep 2025 20:20:58 +0100 Subject: simplify python file structure --- 2024/18/python.py | 47 +++++++++++++++++++++++++++++++++++++++++++ 2024/18/python/main.py | 45 ----------------------------------------- 2024/18/python/pyproject.toml | 6 ------ 3 files changed, 47 insertions(+), 51 deletions(-) create mode 100755 2024/18/python.py delete mode 100644 2024/18/python/main.py delete mode 100644 2024/18/python/pyproject.toml (limited to '2024/18') diff --git a/2024/18/python.py b/2024/18/python.py new file mode 100755 index 0000000..1f987c6 --- /dev/null +++ b/2024/18/python.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +from bisect import bisect_left +from collections import deque +from fileinput import input + +coords = [line.strip().split(",") for line in input()] +grid = {complex(int(x), int(y)): t for t, [x, y] in enumerate(coords)} + + +def solve(size, delay): + q = deque([(0, 0)]) + seen = set() + while q: + curr, t = q.popleft() + if curr in seen: + continue + if curr == complex(size, size): + return t + seen.add(curr) + + for d in [1, -1, 1j, -1j]: + x = curr + d + if not (0 <= x.real <= size and 0 <= x.imag <= size): + continue + if x in grid and grid[x] < delay: + continue + q.append((x, t + 1)) + return None + + +silver = solve(70, 1024) +# silver = solve(6, 12) # test.txt + +gold = ",".join( + coords[ + bisect_left( + list(range(len(grid))), + True, + key=lambda x: solve(70, x) is None, + ) + - 1 + ] +) + +print("silver:", silver) +print("gold:", gold) diff --git a/2024/18/python/main.py b/2024/18/python/main.py deleted file mode 100644 index 071fa90..0000000 --- a/2024/18/python/main.py +++ /dev/null @@ -1,45 +0,0 @@ -from bisect import bisect_left -from collections import deque -from fileinput import input - -coords = [line.strip().split(",") for line in input()] -grid = {complex(int(x), int(y)): t for t, [x, y] in enumerate(coords)} - - -def solve(size, delay): - q = deque([(0, 0)]) - seen = set() - while q: - curr, t = q.popleft() - if curr in seen: - continue - if curr == complex(size, size): - return t - seen.add(curr) - - for d in [1, -1, 1j, -1j]: - x = curr + d - if not (0 <= x.real <= size and 0 <= x.imag <= size): - continue - if x in grid and grid[x] < delay: - continue - q.append((x, t + 1)) - return None - - -silver = solve(70, 1024) -# silver = solve(6, 12) # test.txt - -gold = ",".join( - coords[ - bisect_left( - list(range(len(grid))), - True, - key=lambda x: solve(70, x) is None, - ) - - 1 - ] -) - -print("silver:", silver) -print("gold:", gold) diff --git a/2024/18/python/pyproject.toml b/2024/18/python/pyproject.toml deleted file mode 100644 index f1deef2..0000000 --- a/2024/18/python/pyproject.toml +++ /dev/null @@ -1,6 +0,0 @@ -[project] -name = "aoc-2024-18" -version = "0.1.0" -description = "advent of code 2024-18" -requires-python = ">=3.13" -dependencies = [] -- cgit v1.2.3