Solve 2021:1 "Sonar sweep"
Felt a bit slow and rusty. Tooling was not set up properly on the computer which decreased the flow. Anyhow, fun first day! Could have been done more pythonic with list sequences, and readability would have increased with more use of sum() and lambdas. But this is not what Advent of Code is about.
This commit is contained in:
parent
fec07723b8
commit
9976edc457
2 changed files with 71 additions and 0 deletions
31
2021-python/solutions/day_01.py
Normal file
31
2021-python/solutions/day_01.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from solutions import BaseSolution
|
||||
|
||||
|
||||
class Solution(BaseSolution):
|
||||
input_file = "01.txt"
|
||||
|
||||
def __str__(self):
|
||||
return "Day 1: Sonar Sweep"
|
||||
|
||||
def parse_input(self, data):
|
||||
return [int(n) for n in data.split()]
|
||||
|
||||
def solve(self, puzzle_input):
|
||||
return sum(
|
||||
[puzzle_input[i] > puzzle_input[i - 1] for i in range(1, len(puzzle_input))]
|
||||
)
|
||||
|
||||
def solve_again(self, puzzle_input):
|
||||
puzzle_input.append(max(puzzle_input) + 1)
|
||||
return sum(
|
||||
[
|
||||
(puzzle_input[i] + puzzle_input[i - 1] + puzzle_input[i - 2])
|
||||
> (puzzle_input[i - 1] + puzzle_input[i - 2] + puzzle_input[i - 3])
|
||||
for i in range(2, len(puzzle_input) - 1)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
solution = Solution()
|
||||
solution.show_results()
|
||||
40
2021-python/tests/test_day_01.py
Normal file
40
2021-python/tests/test_day_01.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import unittest
|
||||
|
||||
from solutions.day_01 import Solution
|
||||
|
||||
|
||||
class Day01TestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.solution = Solution()
|
||||
self.puzzle_input = self.solution.parse_input(
|
||||
"""
|
||||
199
|
||||
200
|
||||
208
|
||||
210
|
||||
200
|
||||
207
|
||||
240
|
||||
269
|
||||
260
|
||||
263
|
||||
"""
|
||||
)
|
||||
|
||||
def test_parse_puzzle_input(self):
|
||||
data = """
|
||||
12
|
||||
23
|
||||
45
|
||||
"""
|
||||
assert self.solution.parse_input(data) == [12, 23, 45]
|
||||
|
||||
def test_solve_first_part(self):
|
||||
assert self.solution.solve(self.puzzle_input) == 7
|
||||
|
||||
def test_solve_second_part(self):
|
||||
assert self.solution.solve_again(self.puzzle_input) == 5
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Reference in a new issue