CSP Fork (PIA)
CSP is a library containing an implementation of a CSP solver whose content has been partially generated using copilot. The latter is a backtracking algorithm that solves a CSP by assigning values to variables from their domains and checking if the assignment is consistent.
For the course Imperative Programming - Avancé, after all lessons and exams, we’re assigned to fork this library made by our teacher that solves Constraint Satisfaction Problems (CSPs). The goal of this project, in teams of up to 6 students, is to upgrade the backtracking algorithm with a forward checking and to implement heuristics to order variables and values. We also have to benchmark and compare our modifications by solving Sudoku and N-Queens puzzles.
So, the GitHub repository contains the work of the G team for this assignment and has its `Sphinx documentation`_.
> Version: v2.0.0-rc.0
> Deadline: Friday, May 23, 2025 at 23:00
Performances
Documentation
Project guidelines given for this assignment.
GitHub repository hosting the source code.
ReadTheDocs documentation hosting library’s documentation.
Project report describing what we did.
Technician installation guide
Soon …
Developer preparation guide
Clone the repository and run the following in your preferred CLI:
cmake -S . -B out
Next, move into out and should be about to build, test and btest our
project. For more advanced checks, please refer to cmake/ packages.
License
Copyright © 2025 - G team
These programs is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
These last are 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 Lesser General Public License for more details.
You should have received a copy of the GNU General Public License and the GNU Lesser General Public License along with the programs (Links: GNU GPL v3 & GNU LGPL v3. If not, see https://www.gnu.org/licenses/.
Developers
> χristoφe Демко (Former Developer & Our Teacher)
> Xibitol (Project Leader & DevOps Engineer & Developer)
> Valentin GEGADEN (Developer)
> nandeee_753 (Developer)
> Ryan Heuvel (Developer)
> Adrien Gueguen (Developer & Benchmarker)
> LeGoblin (QA Tester)
Contents:
- CSP-Lib
- CSP-Constraint
- CSP-Problem
- CSP-Solver
reduce_domains()csp_problem_is_consistent()csp_problem_solve()csp_problem_forward_check()csp_problem_choose_min_domain()csp_problem_choose_max_domain()CSPValueChecklistCSPDataChecklistSolveTypefilled_variables_mark_filled()filled_variables_is_filled()filled_variables_mark_unfilled()filled_variables_all_filled()filled_variables_next_unfilled()filled_variables_next_filled()filled_variables_create()filled_variables_destroy()domain_create()domain_destroy()print_domain()print_domains()domain_change_stack_create()domain_change_stack_destroy()domain_change_stack_restore()domain_change_stack_add()DomainDomainChangeFilledVariables