2024-07-07 20:30:53 -04:00
2024-05-08 18:29:48 -04:00
2024-05-20 20:00:34 -04:00
2024-06-09 11:52:25 -04:00
2024-07-07 20:25:04 -04:00
2024-07-07 20:30:53 -04:00
2023-12-27 21:43:13 -05:00
2024-07-04 11:10:27 -04:00
2024-01-27 22:56:28 -05:00
2023-12-28 03:30:10 +01:00
2023-12-27 21:43:13 -05:00
2024-07-07 20:30:53 -04:00

aocpy

Solutions and accompanying utility scripts for Advent of Code challenges written in Python.

2015

  • Day 1: 3:10
  • Day 2: 5:24 :/
  • Day 3: 7:26 ... :/
  • Day 4: 5:11 ...
  • Day 5: 14:05 o.O
  • Day 6: 15:00
  • Day 7: 17:00
  • Day 8: 14:55
  • Day 9: 13:48
  • Day 10: 70:00 ... slow, but fun
  • Day 11: 12:30
  • Day 12: 6:03
  • Day 13: 7:06 (would have been first by a minute, probably 70ish in 2023)
  • Day 14: 27:45 ... that was weak, logic error for part 2 :/
  • Day 15: 16:00 I should probably stop brute forcing these optimization problems
  • Day 16: 19:00
  • Day 17: 9:05
  • Day 18: 10:39
  • Day 19: Many days... yeah this one took me way too long to figure out
  • Day 20: 10:54
  • Day 21: 25:52 cute bug where I didn't consider that no armor is an option
  • Day 22: That was bad. Did not know how to choose between dfs/bfs and logic errors.
  • Day 23: 10:00
  • Day 24: 20:00 ugly - recursive solution would be more elegant
  • Day 25: 9:34

2016

  • Day 1: 29:00 That was emberassingly slow. Out of my rhythm?
  • Day 2: 13:24 Getting back into it but still slow af, obviously.
  • Day 3: 11:20 Ugly and slow.
  • Day 4: 21:05 -__-
  • Day 5: 29:35 -___-
  • Day 6: 4:20 okay
  • Day 7: 31:20 hmm
  • Day 8: 14:50 meh
  • Day 9: 26:00 okay
  • Day 10: 23:07 okay
  • Day 11: 75:00 -__-
  • Day 12: 10:05 okay
  • Day 13: 9:43 okayish
  • Day 14: 120:00 struggled with this one (example incorrect?)
  • Day 15: Trial and error. Should use CRT instead.
  • Day 16: 14:11
  • Day 17: 45:00 didn't follow instructions... focus!
  • Day 18: 9:43
  • Day 19: 90:00 that wasn't easy for me
  • Day 20: 67:00
  • Day 21: 32:33
  • Day 22: 90:00
  • Day 23: 60:00
  • Day 24: 48:00
  • Day 25: 6:45

2017

  • Day 1: 7:30
  • Day 2: 6:15
  • Day 3: 75:00 hmm should have been way quicker
  • Day 4: 3:02
  • Day 5: 6:13
  • Day 6: 8:37
  • Day 7: 19:22
  • Day 8: 8:15
  • Day 9: 6:10
  • Day 10: 55:00
  • Day 11: 66:06
  • Day 12: 6:44
  • Day 13: 120:00
  • Day 14: 17:48
  • Day 15: 11:40
  • Day 16: 13:16
  • Day 17: 55:00
  • Day 18: 23:00
  • Day 19: 45:00
  • Day 20: 9:55 (would have been 10th)
  • Day 21: 90:00
  • Day 22: 25:00
  • Day 23: Multiple days... but super fun.
  • Day 24: 15:45 (48th)
  • Day 25: 41:00

2018

  • Day 1: 1:49 (2nd)
  • Day 2: 10:53
  • Day 3: 6:16 (24th)
  • Day 4: 25:16
  • Day 5: 17:03
  • Day 6: 1:10:29
  • Day 7: 20:15
  • Day 8: 18:35
  • Day 9:

2022

2023

  • Day 1: 40:00 (I don't know what I am doing.)
  • Day 2: 14:15 (Okay, but far way from leaderboard.)
  • Day 3: 1st 20:00, 2nd 70:00... (I had a logic error that took me a while to find.)
  • 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?
  • Day 7: 75:00; leaderboard 16:00... that was just bad; no excuse
  • 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.
  • 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
  • Day 13: 90:00; pretty straightforward but way too slow
  • 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
  • Day 16: 00:27:30 745; best placement so far, of course still horribly slow
  • Day 17: a couple of hours; I realized that I need A* after a while; reused implementation from Project Euler but improved with heapq which was super fun
  • 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.
  • 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.
  • Day 21: Part 1 was straightforward, but part 2 maybe the hardest problem this year.
  • Day 22: Not too hard, but definitely way too slow for leaderboard.
  • Day 23: I found this fun because it required some creativity for part 2. Slow af, of course.
  • 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.
Description
Advent of Code helper scripts and solutions.
Readme 866 KiB
Languages
Python 99.7%
C 0.3%