diff options
-rw-r--r-- | 1.py | 4 | ||||
-rw-r--r-- | 2.py | 4 | ||||
-rw-r--r-- | 3.py | 4 | ||||
-rw-r--r-- | utils.py | 6 |
4 files changed, 14 insertions, 4 deletions
@@ -1,5 +1,5 @@ -from utils import sliding_window +from utils import open_day, sliding_window -inp: list[int] = list(map(int, open('1.in'))) +inp: list[int] = list(map(int, open_day(1))) print(sum(s[0] < s[1] for s in sliding_window(inp, 2))) print(sum(s[0] < s[3] for s in sliding_window(inp, 4))) @@ -1,3 +1,5 @@ +from utils import open_day + Command = tuple[str, int] def part1(commands: list[Command]) -> int: @@ -23,6 +25,6 @@ def part2(commands: list[Command]) -> int: depth += aim * X return pos * depth -commands: list[Command] = [(c, int(q)) for c, q in (l.split() for l in open('2.in'))] +commands: list[Command] = [(c, int(q)) for c, q in (l.split() for l in open_day(2))] print(part1(commands)) print(part2(commands)) @@ -1,3 +1,5 @@ +from utils import open_day + Bits = tuple[bool, ...] Input = list[Bits] @@ -25,7 +27,7 @@ def part2(nums: Input) -> int: co2: Bits = part2_impl(nums, True) return bits_to_int(oxygen) * bits_to_int(co2) -inp: Input = [tuple(c == '1' for c in l.strip()) for l in open('3.in')] +inp: Input = [tuple(c == '1' for c in l.strip()) for l in open_day(3)] print(part1(inp)) print(part2(inp)) @@ -1,6 +1,7 @@ from collections import deque from collections.abc import Iterable, Iterator, Generator from itertools import islice +from sys import argv from typing import TypeVar T = TypeVar('T') @@ -13,3 +14,8 @@ def sliding_window(iterable: Iterable[T], n: int) -> Generator[tuple[T, ...], No for x in it: window.append(x) yield tuple(window) + +def open_day(n: int): + if len(argv) == 2: + return open(argv[1]) + return open(f'{n}.in') |