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.
S
Description
Advent of Code helper scripts and solutions.
Readme 866 KiB
Languages
Python 99.7%
C 0.3%