diff --git a/2019/CMakeLists.txt b/2019/CMakeLists.txt index a679e78..1ee4f27 100644 --- a/2019/CMakeLists.txt +++ b/2019/CMakeLists.txt @@ -4,7 +4,8 @@ project(aoc2019) 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) add_executable(runner src/runner.cpp) diff --git a/2019/src/day01.cpp b/2019/src/day01.cpp index a51511b..c4ff5e4 100644 --- a/2019/src/day01.cpp +++ b/2019/src/day01.cpp @@ -1,35 +1,10 @@ -#include -#include -#include -#include +#include #include "days.hpp" -// Currently an implementation of 2018 day 1 void aoc2019::day01_part1(std::istream &input, std::ostream &output) { - int sum = std::accumulate(std::istream_iterator(input), - std::istream_iterator(), - 0); - - output << sum << std::endl; + output << "Not implemented\n"; } void aoc2019::day01_part2(std::istream &input, std::ostream &output) { - std::vector drifts; - std::copy(std::istream_iterator(input), - std::istream_iterator(), - std::back_inserter(drifts)); - - int cur = 0; - std::unordered_set seen{cur}; - while (true) { - for (auto drift : drifts) { - cur += drift; - if (seen.count(cur) == 1) { - output << cur << std::endl; - return; - } else { - seen.insert(cur); - } - } - } + output << "Not implemented\n"; } diff --git a/2019/src/day02.cpp b/2019/src/day02.cpp new file mode 100644 index 0000000..5bb6abf --- /dev/null +++ b/2019/src/day02.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day03.cpp b/2019/src/day03.cpp new file mode 100644 index 0000000..dfc74de --- /dev/null +++ b/2019/src/day03.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day04.cpp b/2019/src/day04.cpp new file mode 100644 index 0000000..c9f113f --- /dev/null +++ b/2019/src/day04.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day05.cpp b/2019/src/day05.cpp new file mode 100644 index 0000000..af62105 --- /dev/null +++ b/2019/src/day05.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day06.cpp b/2019/src/day06.cpp new file mode 100644 index 0000000..52421fd --- /dev/null +++ b/2019/src/day06.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day07.cpp b/2019/src/day07.cpp new file mode 100644 index 0000000..603b222 --- /dev/null +++ b/2019/src/day07.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day08.cpp b/2019/src/day08.cpp new file mode 100644 index 0000000..03855f3 --- /dev/null +++ b/2019/src/day08.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day09.cpp b/2019/src/day09.cpp new file mode 100644 index 0000000..28f8285 --- /dev/null +++ b/2019/src/day09.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day10.cpp b/2019/src/day10.cpp new file mode 100644 index 0000000..391e112 --- /dev/null +++ b/2019/src/day10.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day11.cpp b/2019/src/day11.cpp new file mode 100644 index 0000000..508ed43 --- /dev/null +++ b/2019/src/day11.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day12.cpp b/2019/src/day12.cpp new file mode 100644 index 0000000..16cb2a8 --- /dev/null +++ b/2019/src/day12.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day13.cpp b/2019/src/day13.cpp new file mode 100644 index 0000000..39dd64c --- /dev/null +++ b/2019/src/day13.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day14.cpp b/2019/src/day14.cpp new file mode 100644 index 0000000..b0441a4 --- /dev/null +++ b/2019/src/day14.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day15.cpp b/2019/src/day15.cpp new file mode 100644 index 0000000..6fa383f --- /dev/null +++ b/2019/src/day15.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day16.cpp b/2019/src/day16.cpp new file mode 100644 index 0000000..61765e5 --- /dev/null +++ b/2019/src/day16.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day17.cpp b/2019/src/day17.cpp new file mode 100644 index 0000000..a979207 --- /dev/null +++ b/2019/src/day17.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day18.cpp b/2019/src/day18.cpp new file mode 100644 index 0000000..4783ee1 --- /dev/null +++ b/2019/src/day18.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day19.cpp b/2019/src/day19.cpp new file mode 100644 index 0000000..aa2248c --- /dev/null +++ b/2019/src/day19.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day20.cpp b/2019/src/day20.cpp new file mode 100644 index 0000000..bb8a3a7 --- /dev/null +++ b/2019/src/day20.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day21.cpp b/2019/src/day21.cpp new file mode 100644 index 0000000..89decc1 --- /dev/null +++ b/2019/src/day21.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day22.cpp b/2019/src/day22.cpp new file mode 100644 index 0000000..70e3852 --- /dev/null +++ b/2019/src/day22.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day23.cpp b/2019/src/day23.cpp new file mode 100644 index 0000000..383e9f5 --- /dev/null +++ b/2019/src/day23.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day24.cpp b/2019/src/day24.cpp new file mode 100644 index 0000000..632ed30 --- /dev/null +++ b/2019/src/day24.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/day25.cpp b/2019/src/day25.cpp new file mode 100644 index 0000000..0eb6ade --- /dev/null +++ b/2019/src/day25.cpp @@ -0,0 +1,10 @@ +#include +#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"; +} diff --git a/2019/src/days.hpp b/2019/src/days.hpp index f511242..f34ed64 100644 --- a/2019/src/days.hpp +++ b/2019/src/days.hpp @@ -6,4 +6,52 @@ namespace aoc2019 { // Declarations of all implemented days. void day01_part1(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); } diff --git a/2019/src/implementations.cpp b/2019/src/implementations.cpp index 570aca2..9111331 100644 --- a/2019/src/implementations.cpp +++ b/2019/src/implementations.cpp @@ -2,9 +2,33 @@ #include "days.hpp" #include "implementations.hpp" -constexpr const std::array, 25> SOLUTIONS = { - {aoc2019::day01_part1, aoc2019::day01_part2} -}; +constexpr const std::array, 25> SOLUTIONS = {{ + {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) { return SOLUTIONS.at(day - 1).at((int) part2); diff --git a/2019/tests/samples/.gitkeep b/2019/tests/samples/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2019/tests/samples/.gitkeep @@ -0,0 +1 @@ + diff --git a/2019/tests/samples/01-1-1.in b/2019/tests/samples/01-1-1.in deleted file mode 100644 index 9205ed4..0000000 --- a/2019/tests/samples/01-1-1.in +++ /dev/null @@ -1,4 +0,0 @@ -+1 --2 -+3 -+1 diff --git a/2019/tests/samples/01-1-1.out b/2019/tests/samples/01-1-1.out deleted file mode 100644 index 00750ed..0000000 --- a/2019/tests/samples/01-1-1.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/2019/tests/samples/01-1-2.in b/2019/tests/samples/01-1-2.in deleted file mode 100644 index 5d703f6..0000000 --- a/2019/tests/samples/01-1-2.in +++ /dev/null @@ -1,3 +0,0 @@ -+1 -+1 -+1 diff --git a/2019/tests/samples/01-1-2.out b/2019/tests/samples/01-1-2.out deleted file mode 100644 index 00750ed..0000000 --- a/2019/tests/samples/01-1-2.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/2019/tests/samples/01-1-3.in b/2019/tests/samples/01-1-3.in deleted file mode 100644 index 399f99d..0000000 --- a/2019/tests/samples/01-1-3.in +++ /dev/null @@ -1,3 +0,0 @@ -+1 -+1 --2 diff --git a/2019/tests/samples/01-1-3.out b/2019/tests/samples/01-1-3.out deleted file mode 100644 index 573541a..0000000 --- a/2019/tests/samples/01-1-3.out +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/2019/tests/samples/01-1-4.in b/2019/tests/samples/01-1-4.in deleted file mode 100644 index 5be202d..0000000 --- a/2019/tests/samples/01-1-4.in +++ /dev/null @@ -1,3 +0,0 @@ --1 --2 --3 diff --git a/2019/tests/samples/01-1-4.out b/2019/tests/samples/01-1-4.out deleted file mode 100644 index 3cfb5ef..0000000 --- a/2019/tests/samples/01-1-4.out +++ /dev/null @@ -1 +0,0 @@ --6