feat: complete Advent of Code 2020-12-03
This commit is contained in:
parent
b2492ec7a6
commit
2912accec8
|
@ -0,0 +1,2 @@
|
|||
/.idea
|
||||
/cmake-build-debug
|
|
@ -0,0 +1,6 @@
|
|||
cmake_minimum_required(VERSION 3.19)
|
||||
project(day_3)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
add_executable(day_3 main.cpp)
|
|
@ -0,0 +1,323 @@
|
|||
...#..............#.#....#..#..
|
||||
...#..#..#..............#..#...
|
||||
....#.#.......#............#...
|
||||
..##.....##.........#........##
|
||||
...#...........#...##.#...#.##.
|
||||
..#.#...#....#.....#........#..
|
||||
....##.###.....#..#.......#....
|
||||
.#..##...#.....#......#..#.....
|
||||
............##.#...#.#.....#.#.
|
||||
..........#....#....#.#...#...#
|
||||
..##....#.#.#......#.........#.
|
||||
#.#.........#..............##..
|
||||
....##.##......................
|
||||
....##..#...........#..........
|
||||
..#..#.#........##....#......#.
|
||||
..............#..#....#.....#..
|
||||
.............#...#.....#...#...
|
||||
.#...........#..........#...#..
|
||||
.#......#.......#......#.......
|
||||
#..#.............#..#....##.###
|
||||
........#.#...........##.#...#.
|
||||
......#..#.....##......#.......
|
||||
.....#.....#....#..............
|
||||
#...##.#......#......#...#.....
|
||||
...........................#...
|
||||
...#....................#.....#
|
||||
..#.....#...#.....##.....#.....
|
||||
....................#......#..#
|
||||
.......#.....##......##....#...
|
||||
#........##...#.....##..#...#..
|
||||
........#..#.#......#..###..#.#
|
||||
##.....#.............#.#....#..
|
||||
..#.................#....######
|
||||
.#.#..#.....#.#..........#.#...
|
||||
.........#....#...#............
|
||||
........#..#.....#.............
|
||||
............#.#.............##.
|
||||
...#....#..#......#............
|
||||
.##....#.....#...#.#...........
|
||||
..#..............#...........##
|
||||
.....#.#.##...#................
|
||||
..........#..#.#..........##..#
|
||||
..#....#...#...#.....######....
|
||||
....#.#..#........#....#.###...
|
||||
.......................#.......
|
||||
..#.....#.##................#..
|
||||
.....#......#..#.....#........#
|
||||
.#...###.......#.#.........#..#
|
||||
............#..................
|
||||
..#.........##.........##......
|
||||
#...........#.#.......###.#....
|
||||
.#...#.....#.........###.....#.
|
||||
.#............#........#..#....
|
||||
...##.#......##................
|
||||
........#...#...#...#..........
|
||||
.......#.##......##.#..........
|
||||
....##.......#..#....#....#....
|
||||
......#.........###........#...
|
||||
#....#....####....##......#....
|
||||
......................#....#.#.
|
||||
...#.#.#....#.#...#...#......#.
|
||||
......#.....##.#...........###.
|
||||
#........#.........##......#.#.
|
||||
....##.....#.....#..#..........
|
||||
......#...#...#.........#...##.
|
||||
..#........#..................#
|
||||
.........#..##.#..#..#...#.#..#
|
||||
.....#.....#...#.....###.....##
|
||||
.............#....#...#........
|
||||
..........#.#.#...#..#...#....#
|
||||
#...............##.......#.....
|
||||
#...#.............#..#...#....#
|
||||
..#...#...##...##...#..#.......
|
||||
..#..#........#.#...........#..
|
||||
.....#.....#..................#
|
||||
....#....##....###..###...##...
|
||||
..#......###.........##....#.##
|
||||
.......#.##...#.......#..#.....
|
||||
...#.#.#.#.....##..#..#........
|
||||
................##....#.#......
|
||||
..#...#...#...#.....##.#...#..#
|
||||
..#..#.....#..##....#....#.....
|
||||
.###...#......#........#.....##
|
||||
##......#..#........#..........
|
||||
....#...#..#....##..#......####
|
||||
.#.....##....#..........#......
|
||||
.#...#....#.........#...#....#.
|
||||
.....#..#.#..#......#..##....#.
|
||||
...#.##...#...#........#......#
|
||||
.#..#...#.#..#.........#...#...
|
||||
#....#......##.....#.......#...
|
||||
..##............##..#.#.#...#..
|
||||
##.......#.......##............
|
||||
#......#.##........#...#...#...
|
||||
.#.#.......##.........#..#.#...
|
||||
.............##.#........#.....
|
||||
.#..#...###...#..#.............
|
||||
.....#...#..#....#.......#.....
|
||||
#.#.........#.#.#...#...#.#....
|
||||
.....#.......#.##.##...#....#..
|
||||
.#.##..#.....#...#.#.#.#.#..#..
|
||||
..........#...................#
|
||||
.....#.#.#...##.........#..#..#
|
||||
.#..#....##......#...#.........
|
||||
.##......#......#...#........#.
|
||||
.....##.#......#............#.#
|
||||
.#.....##..#...........##......
|
||||
.....#......#.......##....#....
|
||||
..#..##..........#.#..........#
|
||||
#.#.......##..#..##.#....#.....
|
||||
.......#..#.#.......##......#.#
|
||||
....#...##...#..............#..
|
||||
.....#.........#......#...##...
|
||||
#.........#........##..#.....#.
|
||||
.#.#..#.....##.......#......#..
|
||||
........#..#....#.....###..#...
|
||||
#.#..#.#..........#............
|
||||
..#......##..#....#.........#..
|
||||
#..............................
|
||||
.......#............#..#..#.#..
|
||||
.#.....#.#....#..#.##.#........
|
||||
.......#.###.#........##.#..#..
|
||||
..............#....#.....##.#..
|
||||
#..............#....#.###......
|
||||
.#..#..#...###............#...#
|
||||
.#.##...#....#..#...#...#......
|
||||
......##..#..#......#..#....#..
|
||||
.........#.......##............
|
||||
...........##...#..#....####...
|
||||
.#..................#..........
|
||||
#...#..#..................#....
|
||||
..............#.....##.....#...
|
||||
..#.#..#...##..#.....#.....#..#
|
||||
....#....#.#.........#.....#...
|
||||
.#.......#...#....#...#.#..#..#
|
||||
#.........##.....##.......#...#
|
||||
#..#............#....#........#
|
||||
..........##...#......#....#...
|
||||
.......#..##...............#...
|
||||
#............#.#.#.....#.......
|
||||
.#........##...#...............
|
||||
..##....#.....#..#.##.#......#.
|
||||
.#...#.............#...#.....#.
|
||||
...##....#.......#......#.#..#.
|
||||
#......................#..#.##.
|
||||
...#..........#..#.........#...
|
||||
..#......#.......#.#....#......
|
||||
....#............#...#......#..
|
||||
.....#..#..##...#...#.........#
|
||||
.....#......#....#....#........
|
||||
.............#..#..........#...
|
||||
....#..............#.....#.#...
|
||||
....#.................#.#...#.#
|
||||
.........#.#...........###.#.##
|
||||
#...........#..##.#....#.##.#..
|
||||
#.#.....#......................
|
||||
##.#.........#....##.#.#..#.#..
|
||||
#..........#.#.#.#.#..#..##..#.
|
||||
..#...#..###.........#......#..
|
||||
.....#......#..#.#............#
|
||||
...........#...#.#.#.###....#..
|
||||
#....#..#.......##.#.......##..
|
||||
..............#.....##.#.......
|
||||
.#.....#.#..#.........#.#.#..#.
|
||||
..#..#..#..#................#..
|
||||
...........#..#.#...#.........#
|
||||
.#..#..#...#........#...#.#..#.
|
||||
...#.#..#......#..#............
|
||||
........#......##.....#....#...
|
||||
#...#......##.#.#..............
|
||||
.#........................#....
|
||||
#.#.....#.##.....#..#.#........
|
||||
#..........##.#.......#....#..#
|
||||
#...#..#..#.....#....#....#....
|
||||
#...........#..#.#....##.##....
|
||||
##......#..#........#.......##.
|
||||
#........#..#...#..........#...
|
||||
...#...#......##....#.#........
|
||||
...##..#..#.##....#...#........
|
||||
#.#..#....#...#........#.......
|
||||
..........#.......#..........#.
|
||||
......##...#....###...#....#...
|
||||
........#..#.....#......#......
|
||||
....#.........##...#..##......#
|
||||
....#...........#.#..#.#.#.#..#
|
||||
..#......#..#......#........#.#
|
||||
#..#....#.....#.............#..
|
||||
............................#..
|
||||
#...#.#.....#...#....#....#....
|
||||
........#...#...#...#...#......
|
||||
.###........#....#.##.....##.#.
|
||||
.........#.....#..........#....
|
||||
.#.........#....##.#.....#.....
|
||||
#..#....................##.#...
|
||||
..##.#.............#....#.#....
|
||||
..#.#........#............##.#.
|
||||
#........#...##.....#...#.....#
|
||||
.........#.#..........#....#..#
|
||||
...###.#..#.#......#.#.....#...
|
||||
......#.....#..#...#........#..
|
||||
.......#...#.....#....#....#..#
|
||||
.#.#........#......##.......#..
|
||||
#.................###..........
|
||||
#........#.#..#....#..#........
|
||||
..##....#.#...##...#...##....#.
|
||||
...#.#......##...#.....#..#....
|
||||
#..#........#...###....#.......
|
||||
##.#....#..#.#..........#......
|
||||
....#...###...#.....#........#.
|
||||
..#.#........#....##.#.........
|
||||
......##.##.................##.
|
||||
.#....##...#.#..#.#............
|
||||
.#...###........#......#.......
|
||||
##..#.#......#..#..#...#.......
|
||||
.......##..#....#........#....#
|
||||
......#..........#.............
|
||||
....##..##..#......#.#.........
|
||||
.....#....................##...
|
||||
...###.....#.....#...#.#.##.#..
|
||||
....#.#..#.......#..#......##..
|
||||
.......#.#..#.##.#...#......#..
|
||||
...#.#....#.#...#..##...#...#..
|
||||
#.##...#....#..#.............#.
|
||||
...#...#...#.......#..........#
|
||||
.#..#.............#..##.#......
|
||||
....#.......#..............#.#.
|
||||
..................#..#.....##.#
|
||||
.#...#..#......#..........#...#
|
||||
..#.#.....#..#....#....#####.#.
|
||||
.......###.......#....#....#...
|
||||
......#.#........#...#.........
|
||||
......#..#.#.#....#.#.#....##..
|
||||
.#...#.#...##.#......#.........
|
||||
#....#..##....#.#.......#....#.
|
||||
..##.#.....#.....#.........#...
|
||||
......#......#....#....#.....#.
|
||||
...##.....#....#......#......#.
|
||||
......#......##............#.#.
|
||||
.##.#.......#....#...#....#....
|
||||
....#..#..#...##.......#..#....
|
||||
....#....#...#.#........#..#...
|
||||
....#.....#..........#..#......
|
||||
....#....#...#.....#..##.....#.
|
||||
##...#..##......#....##..#..#..
|
||||
.....##.##..............##.....
|
||||
#.#....#.##..#....#...##.......
|
||||
..#.....##.....#.....######...#
|
||||
...#.....#.#.#......#......##.#
|
||||
...........##.............#....
|
||||
...##......#..#......#...#.....
|
||||
....#.##......#..#....#.#..#...
|
||||
.#..#....#...#..#.....##.......
|
||||
.....#..#.................#..#.
|
||||
................#..#...#......#
|
||||
...##....#.....#..#....##......
|
||||
....##...............##...#....
|
||||
......#..........#..##.........
|
||||
.......###.......#.........#..#
|
||||
......................#....#.#.
|
||||
#.#.....#...##............#....
|
||||
........#......##......#.....#.
|
||||
...#....#....#.#..##.#..#.#.#..
|
||||
..#.#....#.##...#..#.....#.#...
|
||||
............#....#..#.......#..
|
||||
#...#...#.#......#...##.....#.#
|
||||
......#....#....#.......#......
|
||||
....#.......#..........#....#..
|
||||
........#####........#....#....
|
||||
......#....##..............#.#.
|
||||
....#....#.......#.......#.....
|
||||
.##.#....##....#...............
|
||||
#.....##........#..#.#...#.#...
|
||||
...#......##....#..............
|
||||
.#.....#.....#.......##....##..
|
||||
#....#..........#.#..#.........
|
||||
......##..........##.......#...
|
||||
.##......##.....#.#....#......#
|
||||
....#......................#...
|
||||
.#...........###........#...#..
|
||||
#.#..#..#..#...##.#....#.#..#..
|
||||
...##...........#.#..........#.
|
||||
......#.#..#....#....#.........
|
||||
....#....#.#......#.........##.
|
||||
.#..#...#...##....#...#......#.
|
||||
#.#......#...#.#.#...........#.
|
||||
##.....#..........##....##..##.
|
||||
...#.#.....#..##........#......
|
||||
..#........##........#..#......
|
||||
.......#...............##..#...
|
||||
.......#.#....#..###...........
|
||||
.............#........#...#....
|
||||
#.................#......#..#..
|
||||
...#....#..#..............#...#
|
||||
.............#....##....#..##..
|
||||
#........#..........##...##...#
|
||||
............#....#.....#.#....#
|
||||
.....#..............##..#...#..
|
||||
..#....#......###....#.#...##..
|
||||
....##......#.....#....#.......
|
||||
.....#...............#.....#...
|
||||
.#.....#.....#..............#..
|
||||
#................#..#..........
|
||||
.##....#....#.....#............
|
||||
#.####...#..#..#....#..........
|
||||
..##........##.....##......#..#
|
||||
......#.....#...##.........##..
|
||||
....##..#.....#.#.........#...#
|
||||
.....##..#....#....#.#...#..#..
|
||||
...#............#...........#..
|
||||
.......#.#..#.#.#..#........#.#
|
||||
....#.#........#.#.#..#...#...#
|
||||
..#....#....#..#......#........
|
||||
.#...........................#.
|
||||
.#..#....####........##......#.
|
||||
.#.....#..#.#.................#
|
||||
.#..#...........#...#....#...#.
|
||||
......##..#........#..#....#...
|
||||
..#.............#....#........#
|
||||
#.#..........#.##.......#.#..#.
|
||||
..#....#...#...............#...
|
||||
..............#..........#..#..
|
||||
..#.....#.#.....#...#...#..#...
|
||||
.........#...###.#...#........#
|
|
@ -0,0 +1,64 @@
|
|||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
#include <optional>
|
||||
|
||||
|
||||
int calcNumOfEncounteredTrees(
|
||||
const std::vector<std::vector<bool>>& world,
|
||||
const std::pair<int, int> dimensions,
|
||||
std::pair<int, int> slope
|
||||
) {
|
||||
int treeCount = 0;
|
||||
int x = 0;
|
||||
|
||||
for (int y = 0; y < dimensions.second; y += slope.second) {
|
||||
if (!world[y][ x % dimensions.first]) treeCount++;
|
||||
x += slope.first;
|
||||
}
|
||||
|
||||
return treeCount;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void part1(const std::vector<std::vector<bool>>& world, const int width, const int height) {
|
||||
const int RISE = 1;
|
||||
const int RUN = 3;
|
||||
|
||||
int count = calcNumOfEncounteredTrees(world, { width, height }, { RISE, RUN });
|
||||
std::cout << "(P1) Number of trees: " << count << std::endl;
|
||||
}
|
||||
|
||||
void part2(const std::vector<std::vector<bool>>& world, const int width, const int height) {
|
||||
int count1 = calcNumOfEncounteredTrees(world, { width, height }, { 1, 1 });
|
||||
int count2 = calcNumOfEncounteredTrees(world, { width, height }, { 3, 1 });
|
||||
int count3 = calcNumOfEncounteredTrees(world, { width, height }, { 5, 1 });
|
||||
int count4 = calcNumOfEncounteredTrees(world, { width, height }, { 7, 1 });
|
||||
int count5 = calcNumOfEncounteredTrees(world, { width, height }, { 1, 2 });
|
||||
|
||||
uint64_t product = count1 * count2 * count3 * count4 * count5;
|
||||
std::cout << "(P2) Product of number of trees: " << product << std::endl;
|
||||
}
|
||||
|
||||
|
||||
int main() {
|
||||
std::ifstream input { "../input.txt" };
|
||||
std::vector<std::vector<bool>> world;
|
||||
std::optional<int> maybeWidth = std::nullopt;
|
||||
int lineCount = 0;
|
||||
|
||||
std::string line;
|
||||
while(std::getline(input, line)) {
|
||||
if (!maybeWidth.has_value()) maybeWidth = { line.length() };
|
||||
|
||||
std::vector<bool> row;
|
||||
for (char c : line) row.push_back(c == '.');
|
||||
world.push_back(row);
|
||||
|
||||
lineCount++;
|
||||
}
|
||||
|
||||
part1(world, maybeWidth.value(), lineCount);
|
||||
part2(world, maybeWidth.value(), lineCount);
|
||||
}
|
Reference in New Issue