lots of cleanup
This commit is contained in:
parent
7d0d3e504e
commit
0385cbd62e
26 changed files with 337 additions and 417 deletions
|
|
@ -1,7 +1,7 @@
|
|||
from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
|
||||
from typing import Iterator
|
||||
from typing import Iterator, Self
|
||||
|
||||
day_num = 8
|
||||
|
||||
|
|
@ -20,10 +20,10 @@ class Forest:
|
|||
width: int
|
||||
height: int
|
||||
|
||||
@staticmethod
|
||||
def parse(lines: Iterator[str]) -> Forest:
|
||||
@classmethod
|
||||
def parse(cls, lines: Iterator[str]) -> Self:
|
||||
trees = [[int(tree) for tree in line] for line in lines]
|
||||
return Forest(trees, len(trees[0]), len(trees))
|
||||
return cls(trees, len(trees[0]), len(trees))
|
||||
|
||||
def count_visible_trees(self) -> int:
|
||||
visible: set[tuple[int, int]] = set()
|
||||
|
|
|
|||
|
|
@ -1,45 +1,45 @@
|
|||
from advent.common import utils
|
||||
from advent.common import input
|
||||
|
||||
from .solution import Forest, day_num, part1, part2
|
||||
|
||||
|
||||
def test_part1():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 21
|
||||
result = part1(data)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_part2():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 8
|
||||
result = part2(data)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_visible():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 21
|
||||
result = Forest.parse(data).count_visible_trees()
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_distance():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 4
|
||||
result = Forest.parse(data).single_scenic_score(2, 1)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_distance2():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 8
|
||||
result = Forest.parse(data).single_scenic_score(2, 3)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_max_distance():
|
||||
data = utils.read_data(day_num, 'test01.txt')
|
||||
data = input.read_lines(day_num, 'test01.txt')
|
||||
expected = 8
|
||||
result = Forest.parse(data).max_scenic_score()
|
||||
assert result == expected
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue