Day 7: Bridge Repair
Megathread guidelines
- Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
- You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL
FAQ
- What is this?: Here is a post with a large amount of details: https://programming.dev/post/6637268
- Where do I participate?: https://adventofcode.com/
- Is there a leaderboard for the community?: We have a programming.dev leaderboard with the info on how to join in this post: https://programming.dev/post/6631465
python
45s on my machine for first shot, trying to break my will to brute force 😅. I’ll try improving on it in a bit after I smoke another bowl and grab another drink.
solution
from itertools import product import re import aoc def ltr(e): r = int(e[0]) for i in range(1, len(e), 2): o = e[i] n = int(e[i + 1]) if o == '+': r += n elif o == '*': r *= n elif o == '||': r = int(f"{r}{n}") return r def one(): lines = aoc.get_lines(7) rs = [] for l in lines: d = [int(x) for x in re.findall(r'\d+', l)] t = d[0] ns = d[1:] ops = list(product(['+', '*'], repeat=len(ns) - 1)) for o in ops: e = str(ns[0]) for i, op in enumerate(o): e += f" {op} {ns[i + 1]}" r = ltr(e.split()) if r == t: rs.append(t) break print(sum(rs)) def two(): lines = aoc.get_lines(7) rs = [] for l in lines: d = [int(x) for x in re.findall(r'\d+', l)] t = d[0] ns = d[1:] ops = list(product(['+', '*', '||'], repeat=len(ns) - 1)) for o in ops: e = str(ns[0]) for i, op in enumerate(o): e += f" {op} {ns[i + 1]}" r = ltr(e.split()) if r == t: rs.append(t) break print(sum(rs)) one() two()
What a horrible way to name variables
a
e
o
, Killer Tofu. That’s all I can think of reading this code.It’s not a long lived project, it’s a puzzle, and once solved never needs to run again. My objective here is to get the correct answer, not win a style contest.
Can you provide a link to your solution? I’d like to check it out.