diff options
Diffstat (limited to '')
-rwxr-xr-x | prog/aoc/23/8/1.py | 43 | ||||
-rw-r--r-- | prog/aoc/23/8/1.txt | 9 | ||||
-rw-r--r-- | prog/aoc/23/8/2.txt | 5 | ||||
-rw-r--r-- | prog/aoc/23/8/3.txt | 10 |
4 files changed, 67 insertions, 0 deletions
diff --git a/prog/aoc/23/8/1.py b/prog/aoc/23/8/1.py new file mode 100755 index 0000000..9ff0113 --- /dev/null +++ b/prog/aoc/23/8/1.py @@ -0,0 +1,43 @@ +#!/usr/bin/python3 +inst = input() +input() +graph = {} +try: + while True: + a = input().split(" = ") + graph[a[0]] = a[1].replace("(", "").replace(")", "").split(", ") +except EOFError: + pass +cur = "AAA" +runs = 0 +while True: + for d in inst: + if cur == "ZZZ": + break + if d == "L": + cur = graph[cur][0] + else: + cur = graph[cur][1] + runs += 1 + else: + continue + break +print(runs) +r = [] +for s in [x for x in graph if x[2] == "A"]: + runs = 0 + while True: + for d in inst: + if s[2] == "Z": + break + if d == "L": + s = graph[s][0] + else: + s = graph[s][1] + runs += 1 + else: + continue + break + r.append(runs) +from math import lcm +print(lcm(*r)) diff --git a/prog/aoc/23/8/1.txt b/prog/aoc/23/8/1.txt new file mode 100644 index 0000000..9029a1b --- /dev/null +++ b/prog/aoc/23/8/1.txt @@ -0,0 +1,9 @@ +RL + +AAA = (BBB, CCC) +BBB = (DDD, EEE) +CCC = (ZZZ, GGG) +DDD = (DDD, DDD) +EEE = (EEE, EEE) +GGG = (GGG, GGG) +ZZZ = (ZZZ, ZZZ) diff --git a/prog/aoc/23/8/2.txt b/prog/aoc/23/8/2.txt new file mode 100644 index 0000000..7d1b58d --- /dev/null +++ b/prog/aoc/23/8/2.txt @@ -0,0 +1,5 @@ +LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ) diff --git a/prog/aoc/23/8/3.txt b/prog/aoc/23/8/3.txt new file mode 100644 index 0000000..5b3fa58 --- /dev/null +++ b/prog/aoc/23/8/3.txt @@ -0,0 +1,10 @@ +LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX) |