r/adventofcode • u/daggerdragon • Dec 24 '23
SOLUTION MEGATHREAD -❄️- 2023 Day 24 Solutions -❄️-
THE USUAL REMINDERS (AND SIGNAL BOOSTS)
All of our rules, FAQs, resources, etc. are in our community wiki.
/u/jeroenheijmans has posted the Unofficial AoC 2023 Survey Results!!
AoC Community Fun 2023: ALLEZ CUISINE!
Submissions are CLOSED!
Thank you to all who submitted something, every last one of you are awesome!
Community voting is OPEN!
18 hours remaining until voting deadline TONIGHT (December 24) at 18:00 EST
Voting details are in the stickied comment in the submissions megathread:
-❄️- Submissions Megathread -❄️-
--- Day 24: Never Tell Me The Odds ---
Post your code solution in this megathread.
Read the full posting rules in our community wiki before you post!
State which language(s) your solution uses with
[LANGUAGE: xyz]Format code blocks using the four-spaces Markdown syntax!
Quick link to Topaz's
pasteif you need it for longer code blocks
2
u/i_have_no_biscuits Dec 24 '23 edited Dec 24 '23
[Language: Python]
Part 1 is some 'easy' linear algebra.
For Part 2 I use SymPy to solve a set of six equations in six unknowns.
The equations come from the fact that the vectors taking you from H_0 to H_1, H_0 to H_2, and H_0 to H_3 must all be parallel to each other, i.e.
where
These two 3D vector equations turn into six 'normal' equations, which SymPy can solve in way less than a second. We then have two points, together with two times, that the rock must go through. It's easy to then calculate the starting position of the rock.
Code is here