initial day11
This commit is contained in:
parent
e013b76439
commit
86fdab567f
1 changed files with 67 additions and 0 deletions
67
aoc/day11.py
Normal file
67
aoc/day11.py
Normal 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()
|
Loading…
Add table
Reference in a new issue