Table of Contents
This project has been created with the main goal to provide a easy-to-use development platform to solve Advent of code puzzles in C++.
Features:
- C++ 20 standard
- Parsing of the input files, so you can use your own data to solve the puzzles.
CMake
-based project: feel free to split your logic into several files and classes as you wish.- Fast compilation with
ccache
- Use of native CPU instructions to minimize the execution times.
- Quality tools:
clang-tidy
,cppcheck
, sanitizers, compiler warnings, ... vcpkg
already integrated: import and use any C++ library very easily from the vcpkg catalog.- CI/CD multi-platform pipelines to validate that everything works as it should in every platform available.
- Unit-testing with
Catch2
library: create unit tests to validate the example inputs, or to validate that your future changes don't break your code. - Multi-platform: designed to be usable in Windows, Linux and MacOs.
- Dockerization: if you don't want to pollute your computer with all the required development tools, there is a Docker image available to start developing in a matter of seconds.
Tested on:
Platform | OS | Generator | Cmake version | Compiler |
---|---|---|---|---|
Windows | Windows 10 | VIsual Studio 17 | X.X.X | MSVC v143 |
Linux | Ubuntu 22.04 | Ninja | X.X.X | GCC X.X.X |
Linux | Manjaro 22 | Ninja | X.X.X | GCC X.X.X |
Apple | macOS Monterey 12.6.1 (Intel processor) | Ninja | 3.25.1 | AppleClang 13.1.6.13160021 |
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
First read SETUP_DEV_ENVIRONMENT.md page to install the necessary tools in your computer to be able to use this project.
Clone the repository and all its submodules:
git clone --recursive https://github.com/Hekkfern/advent-of-code.git
Read HOW_TO_USE.md page.
Read HOW_TO_ADD_NEW_PUZZLE.md page.
If you are curious to know how this project has been designed and build, it is suggested to read HOW_THE_FRAMEWORK_WORKS.md page.
Read FAQ.md page.
All the pending tasks (and their status) are shown in @Hekkfern's pending tasks board.
See the open issues for a list of proposed features (and known issues).
- Top Feature Requests (Add your votes using the 👍 reaction)
- Top Bugs (Add your votes using the 👍 reaction)
- Newest Bugs
Read CONTRIBUTING.md page.
Distributed under the MIT License. See LICENSE for more information.
If you want to suggest anything or discuss some ideas about this project, feel free to open a topic in Discussions