Your task is to create a system that solves a given computational problem using a SAT solver. By default we consider decision problems (answer yes/no), but if it is an optimization problem, consider its decision variant: `Does the given instance have a solution whose objective function has at least/at most a given value?'
Use programming language Python 3 and SAT solver Glucose 4.2. Do not use any libraries to convert formulas into CNF or something nontrivial.
Write a script that:
In your submission, apart from the script you should include several instances, in particular:
Your submission must include README.md file with a brief documentation explaining:
You have to work completely independently without any external help other than the teacher. You can search for additional information about the given problem (e.g. interesting instances or if you are not clear about the specification of the problem), but it must not refer to its encoding into CNF or using the SAT solver to solve it. You must also not read any code solving the given (or related) problem. In case of confusion how to proceed, contact me and I will provide you with assistance or help.
For inspiration please check a sample solution of the problem 15 Puzzle, which was kindly prepared by dr. Jiri Svancara (thank you!).
Each student in the same class will solve a different problem. You can choose a problem from the list below or you can submit your own suggestions for a different problem that you are interested in. In this case, describe the problem and why you choose it. It must be approved first as it should be reasonably difficult (so please also include your preferences for the problems from the list).
Send me your preferences by email by the deadline above. You should include at least 10 problems (no upper bound) of your choice, each on separate line in the order of your preference. In case of conflict in your first preference with other students, I will assign the problem to a random student, and then proceed further in the list. In case you do not send me your preferences by the deadline, you will be assigned a random problem that is left.
Final project can be submitted as a link to a public GitHub or GitLab repository, or in .zip file.