Algorithms Exercises solved in C++17, running with Catch2 testing suite throug CMake. Developed with TDD.
- Package Manager for libraries / dependencies vcpkg
- JSON reading with @nlohmann/json
Go to Install and run
This repository is part of a series that share and solve the same objectives, with the difference that each one is based on a different software ecosystem, depending on the chosen programming language:
-
For academic purposes, it is an backup of some algorithm exercises (with their solutions), proposed by various sources: leetcode, hackerrank, projecteuler, ...
-
The solutions must be written on "vanilla code", that is, avoiding as much as possible the use of external libraries (in runtime).
-
Adoption of methodology and good practices. Each exercise is implemented as a unit test set, using TDD (Test-driven Development) and Clean Code ideas.
Foundation of a project that supports:
- Explicit typing when the language supports it, even when it is not mandatory.
- Static Code Analysis (Lint) of code, scripts and documentation.
- Uniform Code Styling.
- Unit Test framework.
- Coverge collection. High coverage percentage. Equal or close to 100%.
- Pipeline (Github Actions). Each command must take care of its return status code.
- Docker-based workflow to replicate behavior in any environment.
- Other tools to support the reinforcement of software development good practices.
- (βοΈ) Install and run directly with make require runtime tools and GNU make installed in your SO.
Note
Please see Environment Notes for more details about the tools required for your environment. In particular, Windows.
- Install and in Docker require Docker and docker compose installed.
- Install and in Docker with make require Docker, docker compose and GNU make installed.
βοΈ: Prefered way.
It is assumed that the following tools have already been installed:
Using a runtime in your SO. You must install dependencies:
< BC53 div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="make dependencies make lint # optional make build make test">make dependencies make lint # optional make build make test