The troubles are far from over, this time it’s the docking program on
the ferry that’s not compatible with the port computer system. We need
to emulate the port’s software by using a bitmasking system to figure
out the correct instructions. Let’s see if we are able to implement
this logic with Power BI.
If you want to follow along please download AdventOfCode2020.pbit and
check Day 1 post for instructions.
Part 1
As usual there’s a file with a set of instructions. Some lines refer
to memory addresses and others to bitmasks. We need to apply the mask
to the values stored in the memory addresses beneath it until we reach
the next mask repeating the process to the end of the file.
We arrived to the island after the ferry trip and we see ourselves in
need of transportation to the nearest airport. Fortunately there’s a
shuttle bus service between the sea port and the airport that could
take us there.
Day 13 is a wonderful mathematical puzzle, following the theme of
modular arithmetic of the previous one. Let’s dive into it as there
some surprises with the numeric limits on Power BI.
After the waiting room we are at a ferry navigating to the island.
There seems to be a problem with the navigation system, and we
volunteered to help. We have a set of instructions and we need to make
some sense of them to help the captain circumvent the storm.
The solution to the problem will be given by calculating the Manhattan
distance (sum of the absolute values of its east/west position and its
north/south position).
Today’s puzzle title is “Seating System” but it’s actually a variation
of a well known zero-player game called Conway’s Game of Life. Many of
us may recall this game as a popular choice for work assignments in
computer science courses.
Dr. John Conway, the English mathematician who created this game was
last year a victim of COVID-19. If you want to know a little more
about him you can read this article that was featured this week on
Hacker News.
Day 10 puzzle brings us an array of adapters. In the first part we
will need to find the number of differences of 1 and 3 jolts. Part two
asks us to find the total number of distinct ways in which we can arranje
the adapters to connect the device to the charging outlet.
If you want to follow along please download AdventOfCode2020.pbit and
check Day 1 post for instructions.
Part 1
After reading that long text, we can see in the example given that all
we have to do is:
This puzzle looks a lot like day 1. We have a list of numbers and need
to do some operations that will return some big numbers.
Let’s try to DAX out them.
If you want to follow along please download AdventOfCode2020.pbit and
check Day 1 post for instructions.
Part 1
We have a list of numbers of each the first 25 are a preamble. After
this, any number can be calculated as a sum of any pair of numbers in
that interval.
In day 8 we find a some weird infinite loop on a handheld device. To
fix this problem we are asked to create a program that goes trough a
stack of instructions.
nop +0
acc +1
jmp +4
acc +3
jmp -3
acc -99
acc +1
jmp -4
acc +6
And after we find where the infinite loop is located we replace the
bad command with the correct instruction.
Day 7: Handy Haversacks is the hardest puzzle to solve using only
Power BI until now. It took me a lot of time to find a viable and fast
solution.
I have first tried to solve this using DAX PATH but had issues
with the different levels of recursion. It was possible in the real
data input for the same bag to be child of different bags in different
levels. Only after a deep dive on using the List.Generate a light
began to appear on the end of the tunnel.
Time to check for some custom declarations forms. In the first part
we will check the distinct number of questions anyone on each group
answered “yes”, and on the second part the questions where everyone
gave a positive response.
If you want to follow along please download AdventOfCode2020.pbit and
check Day 1 post for instructions.
Part 1
The input for this problem is very similar to the passports we have seen on day 4.
We have several lines that represent the answers of the persons in a group and the groups
are separated by a blank line.
This problem seems a lot of work at first but in reality it’s just binary number conversion to decimal.
Picking up the provided example:
If we replace the lower half [F, L] by 0, and the upper half [B, R] by 1 we get:
Doing the conversions: