diff --git a/day02.py b/day02.py index 7f564b7..65bc963 100644 --- a/day02.py +++ b/day02.py @@ -1,6 +1,7 @@ import math from tools.aoc import AOCDay +from tools.types import String from typing import Any @@ -19,28 +20,27 @@ class Day(AOCDay): def parse_input(self) -> list[tuple[int, ...]]: return [tuple(map(int, pair.split("-"))) for pair in self.getInput().split(",")] - def part1(self) -> Any: + def solve(self, part2: bool = False) -> int: ans = 0 for low, high in self.parse_input(): for _id in range(low, high + 1): - str_id = str(_id) - if str_id[:len(str_id) // 2] == str_id[len(str_id) // 2:]: - ans += _id + str_id = String(_id) + if not part2: + if len(set(str_id // 2)) == 1: + ans += _id + else: + for x in range(2, len(str_id) + 1): + if len(set(str_id // x)) == 1: + ans += _id + break return ans + def part1(self) -> Any: + return self.solve() + def part2(self) -> Any: - ans = 0 - for low, high in self.parse_input(): - for _id in range(low, high + 1): - str_id = str(_id) - for x in range(1, len(str_id) // 2 + 1): - blocks = set(str_id[i:i+x] for i in range(0, len(str_id), x)) - if len(blocks) == 1: - ans += _id - break - - return ans + return self.solve(part2=True) if __name__ == '__main__':