From 06bf00f97925d5bc4f02a9daa61968d1369606e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Sat, 30 Nov 2024 02:23:31 +0100 Subject: [PATCH] Add basic solver logic with demo implementation and empty unit tests --- .gitignore | 4 + AdventOfCode2024/AdventOfCode2024.cpp | 23 +++ AdventOfCode2024/AdventOfCode2024.sln | 41 ++++ AdventOfCode2024/AdventOfCode2024.vcxproj | 146 ++++++++++++++ .../AdventOfCode2024.vcxproj.filters | 48 +++++ AdventOfCode2024/Demo.cpp | 43 +++++ AdventOfCode2024/Demo.h | 28 +++ AdventOfCode2024/Program.cpp | 38 ++++ AdventOfCode2024/Program.h | 28 +++ AdventOfCode2024/Solver.cpp | 29 +++ AdventOfCode2024/Solver.h | 34 ++++ AdventOfCode2024/SolverEngine.cpp | 76 ++++++++ AdventOfCode2024/SolverEngine.h | 33 ++++ AdventOfCode2024/UnitTests/UnitTests.cpp | 22 +++ AdventOfCode2024/UnitTests/UnitTests.vcxproj | 178 ++++++++++++++++++ .../UnitTests/UnitTests.vcxproj.filters | 30 +++ AdventOfCode2024/UnitTests/pch.cpp | 5 + AdventOfCode2024/UnitTests/pch.h | 12 ++ 18 files changed, 818 insertions(+) create mode 100644 AdventOfCode2024/AdventOfCode2024.cpp create mode 100644 AdventOfCode2024/AdventOfCode2024.sln create mode 100644 AdventOfCode2024/AdventOfCode2024.vcxproj create mode 100644 AdventOfCode2024/AdventOfCode2024.vcxproj.filters create mode 100644 AdventOfCode2024/Demo.cpp create mode 100644 AdventOfCode2024/Demo.h create mode 100644 AdventOfCode2024/Program.cpp create mode 100644 AdventOfCode2024/Program.h create mode 100644 AdventOfCode2024/Solver.cpp create mode 100644 AdventOfCode2024/Solver.h create mode 100644 AdventOfCode2024/SolverEngine.cpp create mode 100644 AdventOfCode2024/SolverEngine.h create mode 100644 AdventOfCode2024/UnitTests/UnitTests.cpp create mode 100644 AdventOfCode2024/UnitTests/UnitTests.vcxproj create mode 100644 AdventOfCode2024/UnitTests/UnitTests.vcxproj.filters create mode 100644 AdventOfCode2024/UnitTests/pch.cpp create mode 100644 AdventOfCode2024/UnitTests/pch.h diff --git a/.gitignore b/.gitignore index e257658..cad4563 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,7 @@ *.out *.app +# VS and Output +.vs +Debug/ +*.vcxproj.user \ No newline at end of file diff --git a/AdventOfCode2024/AdventOfCode2024.cpp b/AdventOfCode2024/AdventOfCode2024.cpp new file mode 100644 index 0000000..010d4a1 --- /dev/null +++ b/AdventOfCode2024/AdventOfCode2024.cpp @@ -0,0 +1,23 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#include "Program.h" + +int main() +{ + Program program; + program.run(); + return 0; +} \ No newline at end of file diff --git a/AdventOfCode2024/AdventOfCode2024.sln b/AdventOfCode2024/AdventOfCode2024.sln new file mode 100644 index 0000000..ff8d565 --- /dev/null +++ b/AdventOfCode2024/AdventOfCode2024.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdventOfCode2024", "AdventOfCode2024.vcxproj", "{0DEDB176-15A1-48C2-B710-5F17538C5DEC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests", "UnitTests\UnitTests.vcxproj", "{15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Debug|x64.ActiveCfg = Debug|x64 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Debug|x64.Build.0 = Debug|x64 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Debug|x86.ActiveCfg = Debug|Win32 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Debug|x86.Build.0 = Debug|Win32 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Release|x64.ActiveCfg = Release|x64 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Release|x64.Build.0 = Release|x64 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Release|x86.ActiveCfg = Release|Win32 + {0DEDB176-15A1-48C2-B710-5F17538C5DEC}.Release|x86.Build.0 = Release|Win32 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Debug|x64.ActiveCfg = Debug|x64 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Debug|x64.Build.0 = Debug|x64 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Debug|x86.ActiveCfg = Debug|Win32 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Debug|x86.Build.0 = Debug|Win32 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Release|x64.ActiveCfg = Release|x64 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Release|x64.Build.0 = Release|x64 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Release|x86.ActiveCfg = Release|Win32 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {09BCF972-2454-4BE3-9637-D49111238A7F} + EndGlobalSection +EndGlobal diff --git a/AdventOfCode2024/AdventOfCode2024.vcxproj b/AdventOfCode2024/AdventOfCode2024.vcxproj new file mode 100644 index 0000000..cbf78e3 --- /dev/null +++ b/AdventOfCode2024/AdventOfCode2024.vcxproj @@ -0,0 +1,146 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {0dedb176-15a1-48c2-b710-5f17538c5dec} + AdventOfCode2024 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AdventOfCode2024/AdventOfCode2024.vcxproj.filters b/AdventOfCode2024/AdventOfCode2024.vcxproj.filters new file mode 100644 index 0000000..dc84f48 --- /dev/null +++ b/AdventOfCode2024/AdventOfCode2024.vcxproj.filters @@ -0,0 +1,48 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/AdventOfCode2024/Demo.cpp b/AdventOfCode2024/Demo.cpp new file mode 100644 index 0000000..ac5bbb6 --- /dev/null +++ b/AdventOfCode2024/Demo.cpp @@ -0,0 +1,43 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#include "Demo.h" + +std::string Demo::getPuzzleName() const +{ + return "Demo"; +} + +std::string Demo::getInputFileName() const +{ + return "demo.txt"; +} + +void Demo::processDataLine(const std::string& line) +{ + part1 += std::stoi(line); + if (part2 == 0) + { + part2 = std::stoi(line); + } + else + { + part2 *= std::stoi(line); + } +} + +void Demo::finish() +{ +} diff --git a/AdventOfCode2024/Demo.h b/AdventOfCode2024/Demo.h new file mode 100644 index 0000000..d17ae03 --- /dev/null +++ b/AdventOfCode2024/Demo.h @@ -0,0 +1,28 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#pragma once + +#include "Solver.h" + +class Demo : + public Solver +{ +public: + virtual std::string getPuzzleName() const override; + virtual std::string getInputFileName() const override; + virtual void processDataLine(const std::string& line) override; + virtual void finish() override; +}; diff --git a/AdventOfCode2024/Program.cpp b/AdventOfCode2024/Program.cpp new file mode 100644 index 0000000..642ad5a --- /dev/null +++ b/AdventOfCode2024/Program.cpp @@ -0,0 +1,38 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#include +#include + +#include "Demo.h" +#include "Program.h" +#include "SolverEngine.h" + +void Program::run() +{ + std::cout << "### Advent of Code 2023 ###\n"; + runSolvers(); +} + +void Program::runSolvers() +{ + SolverEngine solverEngine{ getInputPaths() }; + solverEngine.run(std::make_unique()); +} + +std::vector Program::getInputPaths() const +{ + return std::vector{ "data", "../../data" }; +} diff --git a/AdventOfCode2024/Program.h b/AdventOfCode2024/Program.h new file mode 100644 index 0000000..0d969f7 --- /dev/null +++ b/AdventOfCode2024/Program.h @@ -0,0 +1,28 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#pragma once + +#include +#include + +class Program +{ +public: + void run(); +private: + void runSolvers(); + std::vector getInputPaths() const; +}; diff --git a/AdventOfCode2024/Solver.cpp b/AdventOfCode2024/Solver.cpp new file mode 100644 index 0000000..b788f5e --- /dev/null +++ b/AdventOfCode2024/Solver.cpp @@ -0,0 +1,29 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#include "Solver.h" + +Solver::Solver() + : part1{ 0 }, part2{ 0 } {} + +long long int Solver::getResultPart1() const +{ + return part1; +} + +long long int Solver::getResultPart2() const +{ + return part2; +} diff --git a/AdventOfCode2024/Solver.h b/AdventOfCode2024/Solver.h new file mode 100644 index 0000000..9e7254c --- /dev/null +++ b/AdventOfCode2024/Solver.h @@ -0,0 +1,34 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#pragma once + +#include + +class Solver +{ +public: + Solver(); + virtual ~Solver() {}; + virtual std::string getPuzzleName() const = 0; + virtual std::string getInputFileName() const = 0; + virtual void processDataLine(const std::string& line) = 0; + virtual void finish() = 0; + long long int getResultPart1() const; + long long int getResultPart2() const; +protected: + long long int part1; + long long int part2; +}; diff --git a/AdventOfCode2024/SolverEngine.cpp b/AdventOfCode2024/SolverEngine.cpp new file mode 100644 index 0000000..1940e4f --- /dev/null +++ b/AdventOfCode2024/SolverEngine.cpp @@ -0,0 +1,76 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#include +#include + +#include "SolverEngine.h" + +SolverEngine::SolverEngine(const std::vector& inputPaths) + : inputPaths_{ inputPaths } {} + +void SolverEngine::run(const std::unique_ptr solver) +{ + std::cout << "\n--- " << solver->getPuzzleName() << " ---\n"; + + auto fullFilePath = tryGetValidFullInputFilePath(solver->getInputFileName()); + if (fullFilePath != "") + { + std::string line; + std::ifstream inputFile{ fullFilePath }; + while (std::getline(inputFile, line)) + { + solver->processDataLine(line); + } + inputFile.close(); + + solver->finish(); + + std::cout << "Part 1: " << solver->getResultPart1() + << "\nPart 2: " << solver->getResultPart2() << std::endl; + } +} + +std::filesystem::path SolverEngine::tryGetValidFullInputFilePath(const std::string& inputFileName) +{ + for (auto path : inputPaths_) + { + std::filesystem::path fullFilePath = path; + fullFilePath /= inputFileName; + if (std::filesystem::exists(fullFilePath)) + { + return fullFilePath; + } + } + + std::cout << "Cannot find puzzle input file '"; + for (size_t i = 0; i < inputPaths_.size(); i++) + { + std::filesystem::path fullFilePath = inputPaths_[i]; + fullFilePath /= inputFileName; + std::cout << std::filesystem::absolute(fullFilePath).string(); + if (i + 2 < inputPaths_.size()) + { + std::cout << "', '"; + } + else if (i + 1 < inputPaths_.size()) + { + std::cout << "', or '"; + } + } + std::cout << "'. Please download the file content from https://adventofcode.com/2024/\n"; + + return ""; +} diff --git a/AdventOfCode2024/SolverEngine.h b/AdventOfCode2024/SolverEngine.h new file mode 100644 index 0000000..854733a --- /dev/null +++ b/AdventOfCode2024/SolverEngine.h @@ -0,0 +1,33 @@ +// Solutions to the Advent Of Code 2024. +// Copyright (C) 2024 Stefan Müller +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + +#pragma once + +#include +#include +#include +#include + +#include "Solver.h" + +class SolverEngine +{ +public: + SolverEngine(const std::vector& inputPaths); + void run(const std::unique_ptr solver); +private: + std::vector inputPaths_; + std::filesystem::path tryGetValidFullInputFilePath(const std::string& inputFileName); +}; diff --git a/AdventOfCode2024/UnitTests/UnitTests.cpp b/AdventOfCode2024/UnitTests/UnitTests.cpp new file mode 100644 index 0000000..7c0e4c4 --- /dev/null +++ b/AdventOfCode2024/UnitTests/UnitTests.cpp @@ -0,0 +1,22 @@ +#include "pch.h" +#include "CppUnitTest.h" + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +namespace UnitTests +{ + TEST_CLASS(UnitTests) + { + public: + + TEST_METHOD(TestMethod1) + { + Assert::Fail(); + } + + TEST_METHOD(TestMethod2) + { + Assert::AreEqual(1, 1); + } + }; +} diff --git a/AdventOfCode2024/UnitTests/UnitTests.vcxproj b/AdventOfCode2024/UnitTests/UnitTests.vcxproj new file mode 100644 index 0000000..46d085c --- /dev/null +++ b/AdventOfCode2024/UnitTests/UnitTests.vcxproj @@ -0,0 +1,178 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + {15C7DA0D-C4D8-420B-AC10-D213AD22B9FA} + Win32Proj + UnitTests + 10.0 + NativeUnitTestProject + + + + DynamicLibrary + true + v143 + Unicode + false + + + DynamicLibrary + false + v143 + true + Unicode + false + + + DynamicLibrary + true + v143 + Unicode + false + + + DynamicLibrary + false + v143 + true + Unicode + false + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Create + Create + Create + Create + + + + + + + + + {0dedb176-15a1-48c2-b710-5f17538c5dec} + + + + + + \ No newline at end of file diff --git a/AdventOfCode2024/UnitTests/UnitTests.vcxproj.filters b/AdventOfCode2024/UnitTests/UnitTests.vcxproj.filters new file mode 100644 index 0000000..264bee8 --- /dev/null +++ b/AdventOfCode2024/UnitTests/UnitTests.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/AdventOfCode2024/UnitTests/pch.cpp b/AdventOfCode2024/UnitTests/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/AdventOfCode2024/UnitTests/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/AdventOfCode2024/UnitTests/pch.h b/AdventOfCode2024/UnitTests/pch.h new file mode 100644 index 0000000..9d715b0 --- /dev/null +++ b/AdventOfCode2024/UnitTests/pch.h @@ -0,0 +1,12 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here + +#endif //PCH_H