generated from public/aoc_template
day11 - optimize
This commit is contained in:
parent
84a0c421b2
commit
f6c5a12e7d
13
day11.py
13
day11.py
@ -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)
|
self.DP[target][start] = sum(self.get_paths(x.name, target, devices) for x in devices[start].outputs)
|
||||||
return self.DP[target][start]
|
return self.DP[target][start]
|
||||||
|
|
||||||
def fill_cache(self, start: str, target: str, devices: dict[str, Device]) -> None:
|
def fill_cache(self, target: str, devices: dict[str, Device]) -> None:
|
||||||
devices = self.parse_input()
|
|
||||||
self.seen_reset()
|
self.seen_reset()
|
||||||
|
|
||||||
Q = deque([devices[target]])
|
Q = deque([devices[target]])
|
||||||
@ -67,14 +66,14 @@ class Day(AOCDay):
|
|||||||
|
|
||||||
def part2(self) -> Any:
|
def part2(self) -> Any:
|
||||||
devices = self.parse_input()
|
devices = self.parse_input()
|
||||||
self.fill_cache("svr", "out", devices)
|
self.fill_cache("out", devices)
|
||||||
if self.DP["out"]["fft"] < self.DP["out"]["dac"]:
|
if self.DP["out"]["fft"] < self.DP["out"]["dac"]:
|
||||||
self.fill_cache("dac", "fft", devices)
|
self.fill_cache("fft", devices)
|
||||||
self.fill_cache("svr", "dac", devices)
|
self.fill_cache("dac", devices)
|
||||||
return self.DP["dac"]["svr"] * self.DP["fft"]["dac"] * self.DP["out"]["fft"]
|
return self.DP["dac"]["svr"] * self.DP["fft"]["dac"] * self.DP["out"]["fft"]
|
||||||
else:
|
else:
|
||||||
self.fill_cache("fft", "dac", devices)
|
self.fill_cache("dac", devices)
|
||||||
self.fill_cache("svr", "fft", devices)
|
self.fill_cache("fft", devices)
|
||||||
return self.DP["fft"]["svr"] * self.DP["dac"]["fft"] * self.DP["out"]["dac"]
|
return self.DP["fft"]["svr"] * self.DP["dac"]["fft"] * self.DP["out"]["dac"]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user