aoc.AOCDay(): add internal cache set for standard "have I seen this value?" situations. Adds SEEN (the set), seen_reset() and seen()
This commit is contained in:
parent
23283d3b66
commit
24cd561370
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user