initial day11

This commit is contained in:
Christoph Stahl 2023-12-11 09:13:11 +01:00
parent e013b76439
commit 86fdab567f

67
aoc/day11.py Normal file
View file

@ -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()