Andrey Listopadov

aoc2021

Originally these were all separate posts, but this generated way too many entries in the feed, so I’ve decided to put these into a single one. I’ve kept the content as is, and this very post originally contained the following message: This is just a quick update on the upcoming posts schedule.
This is it. The last puzzle of the event. We’ve almost made it through. The only thing that stands between us, and the sleigh keys are two herds of sea cucumbers. Cucumbers are constantly in the move, and our task is to simulate their behavior.
Unfortunately, I’ve decided not to solve this task. It does require reverse-engineering the given code, and I’m just not motivated enough to do that. So yet another task that needs to be done by hand is just too much for me. Sure today’s task is interesting, I’m just too exhausted to do it.
And they did it again. Today’s task is yet again “try this easy part, that can be solved by brute force. Yes, correct… now suffer from all this extra data you need to process” type of task. Our task is to move every Amphipod into their room:
Today we need to reboot the reactor. Unfortunately, the reactor is made out of cuboids that can intersect in 3D space. First part requires us to figure out which cubes are on or off, but only for the range of -50 to 50 for each coordinate.
As it seems, when there are neither any problems to solve outside of the submarine nor inside of it, the computer still wants to give us some trouble! This time, though it is just a mere desire to play a game with us.
With the scanners fully deployed (totally, yeah, totally), we now can compute the map of the trench. But when we get the image from the scanners, it looks like a random noise (I wonder why, perhaps because of the extremely convoluted positioning in the previous task?
Unfortunately, I wasn’t able to solve this task. I seriously couldn’t understand what I even need to do with all these coordinates. Maybe I’ll solve it later, though I highly doubt that I’ll come back to any missed day or previous events for that matter.
This weekend is quite different from the last one! Tasks are much harder this time, and I’m also out of the town without my laptop. So I’m writing this on my phone!1 I’m doing it in Emacs, installed inside Termux, which thankfully has a lot of packages, that allow me to continue working even without a laptop.
Today we need to send the probe into the ocean trench. To do that we need to fire the probe with certain x and y velocities, which are integers. For the first part, we need to find such velocity that the probe reaches maximum y position while still reaching the trench.
We’ve finally left the caves! This is such a relief, no more walls full of Chitons, or volcanic activity. And since we’re out of the caves, we’re able to receive a transmission to our submarine! The transmission is encoded with the Buoyancy Interchange Transmission System (BITS) and is represented in hexadecimal.
We’ve almost reached the exit of the cave! But there’s another problem, the walls are getting closer together, and the walls are covered with chitons, and we need to find the safest way so we wouldn’t damage any. Our input is a map of risk values, and we need to reach the bottom right coordinate:
Unfortunately, I wasn’t able to solve today’s puzzle myself, so I’ve asked my friend for help. The task was again about exponential growth, very similar to the day 6 puzzle. However, I wasn’t able to grasp how to keep things from growing this time.
It seems I’ve celebrated early, and the cave story goes on still. Our submarine reached another volcanically active part of the cave! In order to progress, we need to use our onboard thermal camera, which, unfortunately, wasn’t activated ever since it was installed.
The cave story seems to come to an end, as we’re finally heading out of the cave system! However, in order to do that, we need to determine the best path out, and the only way to do that is to find all paths.
After figuring out the deadliest basins, we enter another cave full of dumbo octopuses, officially named as Grimpoteuthis. There are 100 octopuses arranged in a 10 by 10 grid, and each one has an energy level from 0 to 9. Each discrete moment, every octopus gets one additional power to their power level, and after an octopus got more than 9 power, it flashes red.
Yesterday’s task was challenging, the task the day before yesterday wasn’t. The seventh’s day task was pretty straightforward, and the sixth one was kinda tricky to figure out. Today’s task is pretty easy again… I think I’m starting to see the pattern!
While I find the event to be awesome, I saw some negativity regarding Advent of Code noise over the internet. People are writing things like “this is just yet another code jam”, or “go build something practical and useful instead of wasting your time on pointless coding”.
Woke up late today, and didn’t have any time before work to do today’s puzzle. Turned out, this was actually good for me because the task today was quite tricky! I’ve spent several hours on the second part, and likely wouldn’t be able to finish the task before work, so it would have haunted me the whole day.
Remembering last year’s AoC, I can tell that solving one puzzle per day is much more pleasant than solving a bunch of puzzles in a single day. Last year I felt the burden of unsolved days, and an eternal race with the clock to keep up with others.
A new working week started, so without further ado let’s get started. Lanternfish New task! Today we’re watching how a massive school of glowing lanternfish swims past our submarine. There are a lot of them, so their reproduction rate must be growing really fast, or, as the task explicitly mentions, exponentially fast.
Looking at my post schedule, I’m starting to think that if the event will go as good as it goes right now, I’ll write more posts than I wrote since I’ve started this blog. Oh well. Maybe I need a separate section/category for this stuff.
The winter just has started, and it’s already the first weekend! The time goes pretty fast this time of the year. I guess it’s because there’s so much going on! There’s always some kind of rush at the end of the year at work.
So far the event went pretty straightforward! The tasks were simple but interesting. Looking at other people’s solutions, I’m starting to feel that I’m overgeneralizing things quite often. But I think it’s a good thing, as I can see and highlight the points I need to improve!
Day 1 was not that hard, let’s see how the day 2 puzzle goes! I’m going to continue solving tasks as early as possible for me, but I’ve decided to publish respecting posts a bit later the day, so I won’t spoil solutions to anyone who reads me and also participates in AoC.
Welcome to the series of posts on this year’s Advent of Code event! This year, to keep myself motivated, I decided to write a small post each day, in which I’ll describe the way I’ve approached this day’s AOC puzzle. As I’ve mentioned I’ll be solving puzzles in Clojure, (usually) formatting the code as can be seen in the REPL.