From 3a66da513f561e79aecce9c1a470ad34442bc675 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Fri, 8 Dec 2023 13:23:17 +0100 Subject: Initial --- 2023/08/solve.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 2023/08/solve.py diff --git a/2023/08/solve.py b/2023/08/solve.py new file mode 100644 index 0000000..61742f4 --- /dev/null +++ b/2023/08/solve.py @@ -0,0 +1,34 @@ +L = [l.strip() for l in open("input").readlines()] + +path = L[0] +nodes = dict( + (p := n.split(" = ")) and (p[0], p[1][1:-1].split(", ")) for n in L[2:] +) + + +def part1(): + steps = 0 + curr = "AAA" + while True: + d = path[steps % len(path)] + curr = nodes[curr][0 if d == "L" else 1] + steps += 1 + if curr == "ZZZ": + return steps + + +def part2(): + steps = 0 + curr = [k for k in nodes.keys() if k[2] == "A"] + para = len(curr) + while True: + d = path[steps % len(path)] + for i in range(para): + curr[i] = nodes[curr[i]][0 if d == "L" else 1] + steps += 1 + if len([k for k in curr if k[2] == "Z"]) == para: + return steps + + +# print(part1()) +print(part2()) -- cgit v1.2.3