Prepare all days skeletons.

This commit is contained in:
2019-11-28 08:00:46 +01:00
parent 5b91fd4da3
commit e9bf399af4
37 changed files with 321 additions and 49 deletions

View File

@@ -4,7 +4,8 @@ project(aoc2019)
find_package(GTest REQUIRED) find_package(GTest REQUIRED)
add_library(AoCSolutions src/implementations.hpp src/implementations.cpp src/day01.cpp src/days.hpp) file(GLOB DAYS_FILES src/day*.cpp)
add_library(AoCSolutions src/implementations.cpp "${DAYS_FILES}")
target_compile_features(AoCSolutions PUBLIC cxx_std_17) target_compile_features(AoCSolutions PUBLIC cxx_std_17)
add_executable(runner src/runner.cpp) add_executable(runner src/runner.cpp)

View File

@@ -1,35 +1,10 @@
#include <numeric> #include <iostream>
#include <iterator>
#include <vector>
#include <unordered_set>
#include "days.hpp" #include "days.hpp"
// Currently an implementation of 2018 day 1
void aoc2019::day01_part1(std::istream &input, std::ostream &output) { void aoc2019::day01_part1(std::istream &input, std::ostream &output) {
int sum = std::accumulate(std::istream_iterator<int>(input), output << "Not implemented\n";
std::istream_iterator<int>(),
0);
output << sum << std::endl;
} }
void aoc2019::day01_part2(std::istream &input, std::ostream &output) { void aoc2019::day01_part2(std::istream &input, std::ostream &output) {
std::vector<int> drifts; output << "Not implemented\n";
std::copy(std::istream_iterator<int>(input),
std::istream_iterator<int>(),
std::back_inserter(drifts));
int cur = 0;
std::unordered_set<int> seen{cur};
while (true) {
for (auto drift : drifts) {
cur += drift;
if (seen.count(cur) == 1) {
output << cur << std::endl;
return;
} else {
seen.insert(cur);
}
}
}
} }

10
2019/src/day02.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day02_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day02_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day03.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day03_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day03_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day04.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day04_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day04_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day05.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day05_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day05_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day06.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day06_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day06_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day07.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day07_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day07_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day08.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day08_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day08_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day09.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day09_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day09_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day10.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day10_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day10_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day11.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day11_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day11_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day12.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day12_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day12_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day13.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day13_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day13_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day14.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day14_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day14_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day15.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day15_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day15_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day16.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day16_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day16_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day17.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day17_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day17_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day18.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day18_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day18_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day19.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day19_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day19_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day20.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day20_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day20_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day21.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day21_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day21_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day22.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day22_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day22_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day23.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day23_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day23_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day24.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day24_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day24_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

10
2019/src/day25.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include <iostream>
#include "days.hpp"
void aoc2019::day25_part1(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}
void aoc2019::day25_part2(std::istream &input, std::ostream &output) {
output << "Not implemented\n";
}

View File

@@ -6,4 +6,52 @@ namespace aoc2019 {
// Declarations of all implemented days. // Declarations of all implemented days.
void day01_part1(std::istream &input, std::ostream &output); void day01_part1(std::istream &input, std::ostream &output);
void day01_part2(std::istream &input, std::ostream &output); void day01_part2(std::istream &input, std::ostream &output);
void day02_part1(std::istream &input, std::ostream &output);
void day02_part2(std::istream &input, std::ostream &output);
void day03_part1(std::istream &input, std::ostream &output);
void day03_part2(std::istream &input, std::ostream &output);
void day04_part1(std::istream &input, std::ostream &output);
void day04_part2(std::istream &input, std::ostream &output);
void day05_part1(std::istream &input, std::ostream &output);
void day05_part2(std::istream &input, std::ostream &output);
void day06_part1(std::istream &input, std::ostream &output);
void day06_part2(std::istream &input, std::ostream &output);
void day07_part1(std::istream &input, std::ostream &output);
void day07_part2(std::istream &input, std::ostream &output);
void day08_part1(std::istream &input, std::ostream &output);
void day08_part2(std::istream &input, std::ostream &output);
void day09_part1(std::istream &input, std::ostream &output);
void day09_part2(std::istream &input, std::ostream &output);
void day10_part1(std::istream &input, std::ostream &output);
void day10_part2(std::istream &input, std::ostream &output);
void day11_part1(std::istream &input, std::ostream &output);
void day11_part2(std::istream &input, std::ostream &output);
void day12_part1(std::istream &input, std::ostream &output);
void day12_part2(std::istream &input, std::ostream &output);
void day13_part1(std::istream &input, std::ostream &output);
void day13_part2(std::istream &input, std::ostream &output);
void day14_part1(std::istream &input, std::ostream &output);
void day14_part2(std::istream &input, std::ostream &output);
void day15_part1(std::istream &input, std::ostream &output);
void day15_part2(std::istream &input, std::ostream &output);
void day16_part1(std::istream &input, std::ostream &output);
void day16_part2(std::istream &input, std::ostream &output);
void day17_part1(std::istream &input, std::ostream &output);
void day17_part2(std::istream &input, std::ostream &output);
void day18_part1(std::istream &input, std::ostream &output);
void day18_part2(std::istream &input, std::ostream &output);
void day19_part1(std::istream &input, std::ostream &output);
void day19_part2(std::istream &input, std::ostream &output);
void day20_part1(std::istream &input, std::ostream &output);
void day20_part2(std::istream &input, std::ostream &output);
void day21_part1(std::istream &input, std::ostream &output);
void day21_part2(std::istream &input, std::ostream &output);
void day22_part1(std::istream &input, std::ostream &output);
void day22_part2(std::istream &input, std::ostream &output);
void day23_part1(std::istream &input, std::ostream &output);
void day23_part2(std::istream &input, std::ostream &output);
void day24_part1(std::istream &input, std::ostream &output);
void day24_part2(std::istream &input, std::ostream &output);
void day25_part1(std::istream &input, std::ostream &output);
void day25_part2(std::istream &input, std::ostream &output);
} }

View File

@@ -2,9 +2,33 @@
#include "days.hpp" #include "days.hpp"
#include "implementations.hpp" #include "implementations.hpp"
constexpr const std::array<std::array<aoc2019::solution_t, 2>, 25> SOLUTIONS = { constexpr const std::array<std::array<aoc2019::solution_t, 2>, 25> SOLUTIONS = {{
{aoc2019::day01_part1, aoc2019::day01_part2} {aoc2019::day01_part1, aoc2019::day01_part2},
}; {aoc2019::day02_part1, aoc2019::day02_part2},
{aoc2019::day03_part1, aoc2019::day03_part2},
{aoc2019::day04_part1, aoc2019::day04_part2},
{aoc2019::day05_part1, aoc2019::day05_part2},
{aoc2019::day06_part1, aoc2019::day06_part2},
{aoc2019::day07_part1, aoc2019::day07_part2},
{aoc2019::day08_part1, aoc2019::day08_part2},
{aoc2019::day09_part1, aoc2019::day09_part2},
{aoc2019::day10_part1, aoc2019::day10_part2},
{aoc2019::day11_part1, aoc2019::day11_part2},
{aoc2019::day12_part1, aoc2019::day12_part2},
{aoc2019::day13_part1, aoc2019::day13_part2},
{aoc2019::day14_part1, aoc2019::day14_part2},
{aoc2019::day15_part1, aoc2019::day15_part2},
{aoc2019::day16_part1, aoc2019::day16_part2},
{aoc2019::day17_part1, aoc2019::day17_part2},
{aoc2019::day18_part1, aoc2019::day18_part2},
{aoc2019::day19_part1, aoc2019::day19_part2},
{aoc2019::day20_part1, aoc2019::day20_part2},
{aoc2019::day21_part1, aoc2019::day21_part2},
{aoc2019::day22_part1, aoc2019::day22_part2},
{aoc2019::day23_part1, aoc2019::day23_part2},
{aoc2019::day24_part1, aoc2019::day24_part2},
{aoc2019::day25_part1, aoc2019::day25_part2},
}};
aoc2019::solution_t aoc2019::get_implementation(int day, bool part2) { aoc2019::solution_t aoc2019::get_implementation(int day, bool part2) {
return SOLUTIONS.at(day - 1).at((int) part2); return SOLUTIONS.at(day - 1).at((int) part2);

View File

@@ -0,0 +1 @@

View File

@@ -1,4 +0,0 @@
+1
-2
+3
+1

View File

@@ -1 +0,0 @@
3

View File

@@ -1,3 +0,0 @@
+1
+1
+1

View File

@@ -1 +0,0 @@
3

View File

@@ -1,3 +0,0 @@
+1
+1
-2

View File

@@ -1 +0,0 @@
0

View File

@@ -1,3 +0,0 @@
-1
-2
-3

View File

@@ -1 +0,0 @@
-6