diff --git a/src/tools/aoc.py b/src/tools/aoc.py index ad46931..daf71d8 100644 --- a/src/tools/aoc.py +++ b/src/tools/aoc.py @@ -32,6 +32,7 @@ class AOCDay: self._current_test_file = None self._current_test_solution = None self.DP = {} + self.SEEN = set() self.__main_progress_bar_id = None self.__main_progress_bar_pos = 0 self.progress_bars = {} @@ -68,12 +69,14 @@ class AOCDay: if not measure_runtime or case_count < len(self.inputs[part]) - 1: self.DP = {} + self.seen_reset() answer = self._call_part_func(self.part_func[part]) else: stopwatch = StopWatch(auto_start=False) self.__main_progress_bar_pos = 1 for _ in tqdm(range(timeit_number), desc=f"Part {part+1}", leave=False): self.DP = {} + self.seen_reset() stopwatch.start() answer = self._call_part_func(self.part_func[part]) stopwatch.stop() @@ -284,6 +287,16 @@ class AOCDay: pbar = self.progress_bars[bar_id] pbar.update(add) + def seen_reset(self): + self.SEEN = set() + + def seen(self, value: Any, auto_add: bool = True) -> bool: + if value in self.SEEN: + return True + if auto_add: + self.SEEN.add(value) + return False + def print_solution( day: int,