diff --git a/AdventOfCode2022.vcxproj b/AdventOfCode2022.vcxproj index 17a66ae..3a1f741 100644 --- a/AdventOfCode2022.vcxproj +++ b/AdventOfCode2022.vcxproj @@ -152,7 +152,6 @@ - diff --git a/AdventOfCode2022.vcxproj.filters b/AdventOfCode2022.vcxproj.filters index 9c5ea06..105aaed 100644 --- a/AdventOfCode2022.vcxproj.filters +++ b/AdventOfCode2022.vcxproj.filters @@ -18,9 +18,6 @@ Source Files - - Source Files - Source Files diff --git a/src/aoc2022.h b/src/aoc2022.h index 03aef2b..ef7d8e3 100644 --- a/src/aoc2022.h +++ b/src/aoc2022.h @@ -18,8 +18,8 @@ struct SDay { SDay(std::string name); ~SDay(); - virtual Output part1() const = 0; - virtual Output part2() const = 0; + virtual Output part1() = 0; + virtual Output part2() = 0; }; template diff --git a/src/days/Source.cpp b/src/days/Source.cpp deleted file mode 100644 index e474d3b..0000000 --- a/src/days/Source.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "../aoc2022.h" - -template -struct SDay0 : public SDay { - //Class constructor - using SDay::SDay; - - //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } -}; \ No newline at end of file diff --git a/src/days/day01.cpp b/src/days/day01.cpp index ae74a1d..44677cd 100644 --- a/src/days/day01.cpp +++ b/src/days/day01.cpp @@ -5,25 +5,38 @@ struct SDay01 : public SDay { //Class constructor using SDay::SDay; + std::vector elfs; + //Solutions to both days - Output part1() const override final { - - std::string line{""}; - int currentElf{0}, maxElf{0}; + Output part1() override final { + orderCalories(elfs); + return elfs[elfs.size()-1]; + } + Output part2() override final { + //If elfs has been populated (by part 1) + if (elfs.size() > 0) + return (elfs[elfs.size() - 1] + elfs[elfs.size() - 2] + elfs[elfs.size() - 3]); + return 0; + } + + void orderCalories(std::vector &elfs) { + this->input.seekg(0); + std::string line{ "" }; + int currentElf{ 0 }; while (std::getline(this->input, line)) { if (line == "") {//Break to a new elf - if (currentElf > maxElf) - maxElf = currentElf; + elfs.push_back(currentElf); currentElf = 0; continue; } //Add the new line to the current elf currentElf += std::stoi(line); } - return maxElf; + //Push the final elf + elfs.push_back(currentElf); + return std::sort(elfs.begin(), elfs.end()); } - Output part2() const override final { return Output(); } }; diff --git a/src/days/day02.cpp b/src/days/day02.cpp index 971bb77..6dcccf1 100644 --- a/src/days/day02.cpp +++ b/src/days/day02.cpp @@ -6,6 +6,6 @@ struct SDay02 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day03.cpp b/src/days/day03.cpp index d5cd77a..df74625 100644 --- a/src/days/day03.cpp +++ b/src/days/day03.cpp @@ -6,6 +6,6 @@ struct SDay03 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day04.cpp b/src/days/day04.cpp index 631d86a..004aeac 100644 --- a/src/days/day04.cpp +++ b/src/days/day04.cpp @@ -6,6 +6,6 @@ struct SDay04 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day05.cpp b/src/days/day05.cpp index ba1127a..de59aaf 100644 --- a/src/days/day05.cpp +++ b/src/days/day05.cpp @@ -6,6 +6,6 @@ struct SDay05 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day06.cpp b/src/days/day06.cpp index f9230df..498dd7d 100644 --- a/src/days/day06.cpp +++ b/src/days/day06.cpp @@ -6,6 +6,6 @@ struct SDay06 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day07.cpp b/src/days/day07.cpp index 78338dd..9ca1440 100644 --- a/src/days/day07.cpp +++ b/src/days/day07.cpp @@ -6,6 +6,6 @@ struct SDay07 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day08.cpp b/src/days/day08.cpp index 9e14830..c18b3ea 100644 --- a/src/days/day08.cpp +++ b/src/days/day08.cpp @@ -6,6 +6,6 @@ struct SDay08 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day09.cpp b/src/days/day09.cpp index 37da059..7bfe8da 100644 --- a/src/days/day09.cpp +++ b/src/days/day09.cpp @@ -6,6 +6,6 @@ struct SDay09 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day10.cpp b/src/days/day10.cpp index d036e66..b44c568 100644 --- a/src/days/day10.cpp +++ b/src/days/day10.cpp @@ -6,6 +6,6 @@ struct SDay10 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day11.cpp b/src/days/day11.cpp index 74a72bc..cb4888c 100644 --- a/src/days/day11.cpp +++ b/src/days/day11.cpp @@ -6,6 +6,6 @@ struct SDay11 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day12.cpp b/src/days/day12.cpp index 92e3c13..c01341f 100644 --- a/src/days/day12.cpp +++ b/src/days/day12.cpp @@ -6,6 +6,6 @@ struct SDay12 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day13.cpp b/src/days/day13.cpp index cf8d735..869bf7a 100644 --- a/src/days/day13.cpp +++ b/src/days/day13.cpp @@ -6,6 +6,6 @@ struct SDay13 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day14.cpp b/src/days/day14.cpp index 8185bad..8d81713 100644 --- a/src/days/day14.cpp +++ b/src/days/day14.cpp @@ -6,6 +6,6 @@ struct SDay14 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day15.cpp b/src/days/day15.cpp index 22ce16f..b4f2347 100644 --- a/src/days/day15.cpp +++ b/src/days/day15.cpp @@ -6,6 +6,6 @@ struct SDay15 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day16.cpp b/src/days/day16.cpp index 4b86f4d..4a600a9 100644 --- a/src/days/day16.cpp +++ b/src/days/day16.cpp @@ -6,6 +6,6 @@ struct SDay16 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day17.cpp b/src/days/day17.cpp index 0a6c695..0828f3a 100644 --- a/src/days/day17.cpp +++ b/src/days/day17.cpp @@ -6,6 +6,6 @@ struct SDay17 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day18.cpp b/src/days/day18.cpp index 79c155b..856da7f 100644 --- a/src/days/day18.cpp +++ b/src/days/day18.cpp @@ -6,6 +6,6 @@ struct SDay18 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day19.cpp b/src/days/day19.cpp index 802328c..0109a54 100644 --- a/src/days/day19.cpp +++ b/src/days/day19.cpp @@ -6,6 +6,6 @@ struct SDay19 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day20.cpp b/src/days/day20.cpp index eb07c08..704d502 100644 --- a/src/days/day20.cpp +++ b/src/days/day20.cpp @@ -6,6 +6,6 @@ struct SDay20 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day21.cpp b/src/days/day21.cpp index 6236615..973bb73 100644 --- a/src/days/day21.cpp +++ b/src/days/day21.cpp @@ -6,6 +6,6 @@ struct SDay21 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day22.cpp b/src/days/day22.cpp index b42762a..6fd9d89 100644 --- a/src/days/day22.cpp +++ b/src/days/day22.cpp @@ -6,6 +6,6 @@ struct SDay22 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day23.cpp b/src/days/day23.cpp index 270b302..e4a041a 100644 --- a/src/days/day23.cpp +++ b/src/days/day23.cpp @@ -6,6 +6,6 @@ struct SDay23 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day24.cpp b/src/days/day24.cpp index bf154a9..34063a2 100644 --- a/src/days/day24.cpp +++ b/src/days/day24.cpp @@ -6,6 +6,6 @@ struct SDay24 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/days/day25.cpp b/src/days/day25.cpp index f92cbf9..f529170 100644 --- a/src/days/day25.cpp +++ b/src/days/day25.cpp @@ -6,6 +6,6 @@ struct SDay25 : public SDay { using SDay::SDay; //Solutions to both days - Output part1() const override final { return Output(); } - Output part2() const override final { return Output(); } + Output part1() override final { return Output(); } + Output part2() override final { return Output(); } }; diff --git a/src/main.cpp b/src/main.cpp index 65e872d..021f168 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ void runSolutions() { new SDay22("day22"), new SDay23("day23"), new SDay24("day24"), - new SDay25("day25"), + new SDay25("day25") }; for (auto& solution : solutions)