Advent of Code 2021 Day 1
Try the simulator!
The task at hand: Solve for X where
X = the number of times N depth measurements increase
- N = 1
- N = Sum of each subsequent three in a row
Input is
- A multi-line string
- Each contains an positive integer, likely starting between 100-200 and ending close to 10000
It represents
- Measurements of depth on the ocean's floor
Part 1
Split the input into an array of strings
Coerce each string into a number
Initialize a count to 0
For each number in the array, where the first is already accumulated and the current item starts with the second number
If the current number is greater than the accumulating number
Increment the count by 1
Update the accumulating value to reference the current number
Return count
Part 2
Split the input into an array of strings
Coerce each string into a number
Initialize a count to 0
Initialize a sum from the first three numbers in the array
For each number in the array, starting at the second, and ending at the third-to-last
Calculate the sum of three numbers: the one at the current location, the one after, and the one after that
If the sum of these three numbers is greater than the previously initialized sum
Increment count by 1
Update the number in the sum outside this loop to reflect the sum calculated inside this loop
Return count
Part 3: Visualizing the plunge in depth
This input:
199
200
208
210
200
207
240
269
260
263
Looks like this:
\
\
\/\
\
\/\
How could I write an algorithm to generate this map for use in a simulator tool?
Split the input into an array of strings
Coerce each string into a number
Create an array, slopes, to store a series of coordinates and characters
For each number in the array, where the first is already accumulated and the current item starts with the second number
If the current number is greater than the previous - accumulated - number
If the slopes array isn't empty, and it's last item has the / character in it
Add as the new last item in slopes an array with two items:
1. An array with two numbers: 0 and 1
2. The \ character
Else
Add as the new last item in slopes an array with two items:
1. An array with two numbers: 1 and 1
2. The \ character
Else, if the current number is less than the previous - accumulated - number
Add as the new last item in slopes an array with two items:
1. An array with two numbers: 0 and 1
2. The / character
Create a 2D array with the following dimensions and contents:
The array should have a length - number of items - equal to the amount of elements in the slopes array where the number in the first index of the nested array is 1
Each item in the array should have a length - number of items, also the width - equal to the number of items in slopes, since each new step represents a move forward
The initial character at all indices in the 2D array should be a space character
Initialize a starting coordinate, current, to [-1,-1]
For each array item in the slopes array
Update each number in current to equal the corresponding numbers in the nested array in the first index of the current slopes item
Update the space character in the 2D array at the location stored in current - the first number being the row, the second number being the column - to reflect the character in the second index of the slopes item: either \ or /
Print the 2D array as a rectangular board of \ or / or space characters by concatenating each character together in each nested array, then concatenating each new string of characters together, each one separated by a new line character
Try the simulator!
Head's up: the second drawn line is very faint.
Year in review
- 25 days attempted and documented
- 34/50 stars earned
- 15 simulators crafted
- Countless GIFs designed
- Several
A-ha!
moments encountered - Plenty of theory to study...some day
Top comments (0)