Day 24: Odds
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
Scala3, Sympy
import re as re2 from sympy import * p, v, times, eqs = symbols('x y z'), symbols('dx dy dz'), [], [] def parse_eq(i: int, s: str): parts = [int(p) for p in re2.split(r'[,\s@]+', s) if p.strip() != ''] time = Symbol(f't{i}') times.append(time) for rp, rv, hp, hv in zip(p, v, parts[:3], parts[3:]): eqs.append(Eq(rp + time * rv, hp + time * hv)) # need 3 equations for result, everything after that just slows things down neq = 3 with open('task1.txt', 'r') as fobj: for i, s in zip(range(neq), fobj.readlines()): parse_eq(i, s) for sol in solve(eqs, list(p) + list(v) + times): x, y, z, *_ = sol print(x + y + z)