This repository holds solutions for the Advent of Code. It's written in a pedagogical style, to help beginner programmers get some insight into places where you can grow.
Warning
For the record, I am not an expert on these technologies. I don't want you to feel misled that this is the definitive best source on information for CMake, for C, for design. I'm not even 100% sure the solutions will be accurate!
This is something you can use to get information on how to approach problems. Links to documentation or letting you know about concepts in Computer Science that aren't usually in beginner lessons. It's a launching point for your own self-study.
That being said, if you see any errors or have any suggestions, please feel free to open a PR.
Someone that has knowledge of C-syntax and basic programming concepts (e.g. you know what a function is, or you know how to look it up). I try not to assume any experience beyond that.
You can read the source code directly to get some links to useful resources.
I've placed comments in the files to try and explain concepts. I'd recommend visiting this stuff top-bottom, so start with the CMakeLists.txt file in the root directory. Then work your way through each day in order.
- CMake, for cross-platform builds
- Visual Studio Code, for text editing
- git, for version control
You'll need to install the following dependencies to build the source code.
- A C/C++ compiler
- Windows: Download the MSVC Build Tools and launch VS Code from a MSVC Developer shell.
- Windows: Alternatively, download the MSYS2 environment and install the UCRT64 GCC tools.
- macOS: Download the XCode build tools.
- Linux: Depending on your distribution, gcc should be sufficient.
- CMake
CMakeLists.txt // CMakeLists for the entire project
2023 // 2023 advent of code challenges
CMakeLists.txt // CMake files for the 2023 folder
1.trebuchet // solution for day 1
main.c
CMakeLists.txt // build files for day 1
...
Solutions for each day are stored under 2023.
I mostly wrote this to help motivate and explain programming concepts for a friend of mine. I decided to add additional comments and make it public, in case others find this useful.