From b2c17ba9c350dd52688c1eee910c801b794e2ea7 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Tue, 7 Dec 2021 16:06:04 +0100 Subject: Day 7: Slow --- day7/__init__.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 day7/__init__.py (limited to 'day7/__init__.py') diff --git a/day7/__init__.py b/day7/__init__.py new file mode 100644 index 0000000..b3579b7 --- /dev/null +++ b/day7/__init__.py @@ -0,0 +1,41 @@ +from collections import Counter +from copy import copy +from typing import List + +from aoc import BaseAssignment + +class Assignment(BaseAssignment): + def parse_item(self, item: str) -> List[int]: + return [ int(i) for i in item.split(',') ] + + def read_input(self, example = False) -> List[int]: + return next(super().read_input(example)) + + @staticmethod + def calculate_cost(start, end) -> int: + raise NotImplementedError() + + def run(self, input: List[int]) -> int: + return min([ + sum([ + self.calculate_cost(item, position) + for item in input + ]) + for position in range(min(input), max(input) + 1) + ]) + +class AssignmentOne(Assignment): + example_result = 37 + + @staticmethod + def calculate_cost(start, end) -> int: + return abs(end - start) + +class AssignmentTwo(Assignment): + example_result = 168 + + @staticmethod + def calculate_cost(start, end) -> int: + base_cost = AssignmentOne.calculate_cost(start, end) + extra = sum(i for i in range(base_cost)) + return base_cost + extra \ No newline at end of file -- cgit v1.2.3