day11 - optimize

This commit is contained in:
Stefan Harmuth 2025-12-11 09:19:09 +01:00
parent 84a0c421b2
commit f6c5a12e7d

View File

@ -47,8 +47,7 @@ class Day(AOCDay):
self.DP[target][start] = sum(self.get_paths(x.name, target, devices) for x in devices[start].outputs)
return self.DP[target][start]
def fill_cache(self, start: str, target: str, devices: dict[str, Device]) -> None:
devices = self.parse_input()
def fill_cache(self, target: str, devices: dict[str, Device]) -> None:
self.seen_reset()
Q = deque([devices[target]])
@ -67,14 +66,14 @@ class Day(AOCDay):
def part2(self) -> Any:
devices = self.parse_input()
self.fill_cache("svr", "out", devices)
self.fill_cache("out", devices)
if self.DP["out"]["fft"] < self.DP["out"]["dac"]:
self.fill_cache("dac", "fft", devices)
self.fill_cache("svr", "dac", devices)
self.fill_cache("fft", devices)
self.fill_cache("dac", devices)
return self.DP["dac"]["svr"] * self.DP["fft"]["dac"] * self.DP["out"]["fft"]
else:
self.fill_cache("fft", "dac", devices)
self.fill_cache("svr", "fft", devices)
self.fill_cache("dac", devices)
self.fill_cache("fft", devices)
return self.DP["fft"]["svr"] * self.DP["dac"]["fft"] * self.DP["out"]["dac"]