Module aoc::year2015::day25

source ·
Expand description

§Let It Snow

There are two parts to solving this problem.

The first is converting the row and column to an zero based index. Using the example of the 12th code at row 4 column 2:

       | 1   2   3   4   5   6
    ---+---+---+---+---+---+---+
     1 |  1   3   6  10  15  21
     2 |  2   5   9  14  20
     3 |  4   8  13  19
     4 |  7  12  18
     5 | 11  17
     6 | 16

First we observe that the numbers on the top row are the triangular numbers that can be calculated with the formula (n * (n + 1)) / 2 for the nth number.

Starting at the chosen number 12 and moving diagonally upwards to the right we intersect the top row at column column + row - 1 = 2 + 4 - 1 = 5. This gives the triangular number 5 * (5 + 1) / 2 = 15. Then we count backwards by row elements to get the one less zero based based index 15 - 4 = 11.

The second part is realizing that the description of the code generation is modular exponentiation. The exponent of the first code is zero, which is the reason for using a zero based index.

Functions§

Type Aliases§