Sean McLemon | Advent of Code

Home | Czech | Blog | GitHub | Advent Of Code | Notes

My Advent Of Code 2024 solutions. See also 2022, 2021, 2020, 2019, 2018, 2017, 2016 and 2015.


2024-12-20 - Race Condition

(First cell of article is code)

2024-12-19 - Linen Layout

(First cell of article is code)

2024-12-18 - RAM Run

(First cell of article is code)

2024-12-12 - Garden Groups

(First cell of article is code)

2024-12-11 - Plutonian Pebbles

(First cell of article is code)

2024-12-10 - Hoof It

(First cell of article is code)

2024-12-09 - Disk Fragmenter

(First cell of article is code)

2024-12-08 - Resonant Collinearity

Day 8 puzzle input is a grid showing the positions of certain antennae each operating on different frequencies (same letter/digit = same frequency), mine is here). Part 1 involves finding "antinodes" (can't be bothered explaining, it's stupid) and counting how many there are. Part 2 involves adjusting how the "antinodes" are calculated and counting them again.


2024-12-07 - Bridge Repair

Day 7 puzzle input is a list of values followed by a sequence of "equations" that don't have any operators between them, mine is here). Part 1 involves inserting either addition or multiplication operators to make the equation compute the reading value. Part 2 involves doing the same but with the addition of a concatenation operator (where 1 || 2 gives 12)


2024-12-06 - Guard Gallivant

Day 6 puzzle input is a little 2D of empty space, obstacle and a guard (".", "#" and "^" respectively), mine is here). Part 1 involves following a set of rules governing the guard's movement and identifying the number of distinct places he visits before leaving the area. Part 2 involves finding the number of places you can add an obstacle to so that the guard ends up in a loop.


2024-12-05 - Print Queue

Day 5 puzzle input is a list of rules that determine the correct order of things (first|second implies first has to appear before second for an "update" to be valid), mine is here). Part 1 involves using these rules to identify the valid updates then sum their middle elements. Part 2 involves taking the invalid updates and reordering them according to the rules so that they're valid and then summing their middle elements.


2024-12-04 - Ceres Search

Day 4 puzzle input is grid of letters, mine is here). Part 1 involves finding the text "XMAS" vertically/horizontally/diagonally both forwards/backwards and up/down. Part 2 involves finding the letter "A" flanked by two "M"s and and "S" in an "X" formation - again forwards/backwards/up/down.


2024-12-03 - Mull It Over

Day 3 puzzle input is a bunch of text with something that looks like function calls embedded (mul(x,y), don't(), do()) scattered throughout, mine is here). Part 1 involves evaluating each mul expression and summing the results. Part 2 involves doing the same but in-order, but ignoring all mul expressions after a dont call until we hit a do call.

I misunderstood the task - I thought maybe the parser had to be a little more advanced and that we'd maybe have expressions with nested calls like mul(10, mul(20,30), 40), but apparently not. Many people easily solved this by just tearing through it with a regex like mul(\d+,\d+)|do()|don't() and iterating over the matches.


2024-12-02 - Red-Nosed Reports

Day 2 puzzle input is a list of sequences of integers which represent a series of level readings mine is here). Part 1 involves determining how series of readings (lines of input) are "safe" (no reading is any other than 1-3 higher or lower than the previous, and readings are only ever increasing or decreasing). Part 2 involves doing the same but if removing any one element causes the series to satisfy the rules.


2024-12-01 - Historian Hysteria

Day 1 puzzle input is a list of pairs of integers which represent some location identifiers (mine is here). Part 1 involves treating the list as two separate columns of data, sorting each and finding the sum of differences between each corresponding element of each column. Part two involves calculating a "similarity" score for each element of the left column (each value in the left column multiplied by how many occurrences of each value there are in the right column) and finding the sum of all similarity scores.