2023-12-28 03:42:58 +01:00
|
|
|
My solutions to the Advent of Code 2023 programming challenges.
|
|
|
|
|
|
|
|
Thanks to Eric Wastl for creating this enjoyable event.
|
|
|
|
|
2024-01-24 02:23:47 +01:00
|
|
|
- Requires `lib.py` from [aocpy](https://git.felixm.de/felixm/aocpy) repository.
|
|
|
|
- Requires `sympy` for day 24.
|
|
|
|
- Requires `matplotlib` and `networkx` for hands-on day 25.
|
2023-12-28 03:42:58 +01:00
|
|
|
|
2023-12-02 17:53:40 +01:00
|
|
|
# Times
|
|
|
|
|
|
|
|
- Day 1: 40:00 (I don't know what I am doing.)
|
|
|
|
- Day 2: 14:15 (Okay, but far way from leaderboard.)
|
2023-12-27 19:26:40 +01:00
|
|
|
- Day 3: 1st 20:00, 2nd 70:00... (I had a logic error that took me a while to
|
|
|
|
find.)
|
2023-12-06 17:47:04 +01:00
|
|
|
- Day 4: 1st 9:06, 2nd 22:31; it wasn't hard but I didn't think quick enough :/
|
|
|
|
- Day 5: 1st 25:00, 2nd 1:55:00; Required patience and accuracy
|
|
|
|
- Day 6: 13:54; I was slow because I thought it is much harder?
|
2023-12-08 05:57:38 +01:00
|
|
|
- Day 7: 75:00; leaderboard 16:00... that was just bad; no excuse
|
2023-12-16 00:20:31 +01:00
|
|
|
- Day 8: 25:00; I was doing pretty decent here.
|
|
|
|
- Day 9: 57:00; my input parse function did not consider negative values...
|
|
|
|
- Day 10: 180:00; this one was hard for me.
|
2023-12-27 19:26:40 +01:00
|
|
|
- Day 11: 68:00; okay but not elegant and way too slow ofc; x-ray solution
|
|
|
|
would have been neat
|
|
|
|
- Day 12: 52:00 and 22:00 for leaderboard; had the right idea and I am good at
|
|
|
|
this type of problem
|
2023-12-24 17:51:31 +01:00
|
|
|
- Day 13: 90:00; pretty straightforward but way too slow
|
2023-12-25 16:41:47 +01:00
|
|
|
- Day 14: 5:55 for first and then 48:00; straightforward but slow, ofc
|
|
|
|
- Day 15: 4:30 and 31:20; more reading comprehension than programming
|
2023-12-16 06:32:59 +01:00
|
|
|
- Day 16: 00:27:30 745; best placement so far, of course still horribly slow
|
2023-12-19 21:52:36 +01:00
|
|
|
- Day 17: a couple of hours; I realized that I need A* after a while; reused
|
2023-12-18 04:07:11 +01:00
|
|
|
implementation from Project Euler but improved with heapq which was super fun
|
2023-12-19 21:52:36 +01:00
|
|
|
- Day 18: a couple of hours; I realized that I need shoelace algo for part two
|
|
|
|
but didn't realize that I have to compute the outer edges for a while and
|
|
|
|
after I did, I still got clockwise/counter-clockwise issues. They could have
|
|
|
|
made it meaner by using different clock directions for example and input.
|
2023-12-27 19:26:40 +01:00
|
|
|
- Day 19: This one was pretty straightforward and required the interval
|
|
|
|
technique we applied earlier.
|
|
|
|
- Day 20: Part 2 was tough. I had the right idea of printing out the periods of
|
|
|
|
the input conjunction gate pretty early, but then messed up the
|
|
|
|
implementation and thought it wasn't gonna work. Spent a half day thinking up
|
|
|
|
something else before returning to the idea and it worked flawlessly.
|
2024-01-24 02:23:47 +01:00
|
|
|
- Day 21: Part 1 was straightforward, but part 2 maybe the hardest problem this
|
|
|
|
year.
|
2023-12-28 00:30:25 +01:00
|
|
|
- Day 22: Not too hard, but definitely way too slow for leaderboard.
|
2024-01-24 01:53:32 +01:00
|
|
|
- Day 23: I found this fun because it required some creativity for part 2. Slow
|
|
|
|
af, of course.
|
2024-01-24 02:23:47 +01:00
|
|
|
- Day 24: Solve problem with sympy. I first used numpy to solve part 1 and it
|
|
|
|
was much faster than using sympy, but I lost that solution when switching to
|
|
|
|
sympy. Takes about three minutes to run for part 1 and then part 2 is under a
|
|
|
|
second.
|
|
|
|
- Day 25: I cheeky solved this by plotting the graph and manually removing the
|
|
|
|
nodes. I should probably try to write an algorith that does that, but meh.
|
|
|
|
Manually plotting requires matplotlib and networkx packages.
|