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