From 86fdab567fa0ad0ac14d7d330d49390c3aa4e0b3 Mon Sep 17 00:00:00 2001 From: Christoph Stahl Date: Mon, 11 Dec 2023 09:13:11 +0100 Subject: [PATCH] initial day11 --- aoc/day11.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 aoc/day11.py diff --git a/aoc/day11.py b/aoc/day11.py new file mode 100644 index 0000000..447410a --- /dev/null +++ b/aoc/day11.py @@ -0,0 +1,67 @@ +from __future__ import annotations +from dataclasses import dataclass +from .aoc import Aoc2, AocSameParser + + +@dataclass +class Map: + galaxies: list[tuple[int, int]] + + @classmethod + def from_input(cls, inpt: str) -> Map: + lines = inpt.splitlines() + + galaxies = [] + + for y, line in enumerate(lines): + for x, char in enumerate(line): + if char == "#": + galaxies.append((x, y)) + + print(galaxies) + + height = len(lines) + width = len(lines[0]) + + missing_ys = [] + missing_xs = [] + + for y in range(height): + if y not in (y for (_, y) in galaxies): + missing_ys.append(y) + + for x in range(width): + if x not in (x for (x, _) in galaxies): + missing_xs.append(x) + + print(missing_xs) + print(missing_ys) + + adjusted_galaxies = [] + + for x, y in galaxies: + x_offset = len([m for m in missing_xs if m < x]) + y_offset = len([m for m in missing_ys if m < y]) + adjusted_galaxies.append((x + x_offset, y + y_offset)) + + return cls(galaxies) + + +class Day11(AocSameParser[Map], Aoc2[Map, Map]): + def parseinput(self, inpt: str) -> Map: + return Map.from_input(inpt) + + def part1(self, inpt: Map) -> None: + print(inpt) + + def part2(self, inpt: Map) -> None: + print(inpt) + + +def main() -> None: + day11 = Day11(2023, 11) + day11.run_example_1() + + +if __name__ == "__main__": + main()