-
Notifications
You must be signed in to change notification settings - Fork 0
/
json-2-3sat.py
26 lines (22 loc) · 1.01 KB
/
json-2-3sat.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!venv/bin/python
from sys import argv, stderr
from lib.file_io import read_grid, save_dimacs
from lib.gen_formule import gen_cnf, sat_3sat
if __name__ == "__main__":
# vérification du nombre d'arguments
if len(argv) < 2:
print("Erreur: veuillez fournir au moins une grille en argument", file=stderr)
print("Usage: {} path/to/grid.json path/to/another/grid.json ....".format(argv[0]), file=stderr)
exit(1)
# convertir chaque grille fournie en argument et les exporter au format DIMACS
for i in range(1, len(argv)):
# lire la grille
grid = read_grid(argv[i])
# générer les clauses
cnf = gen_cnf(grid["width"], grid["height"], grid["zones"], grid["blacks"])
# convertir les clauses en clauses 3-SAT
cnf = sat_3sat(cnf, grid["height"], grid["width"])
# générer le nom du fichier de sortie
output_filename = argv[i].split(".json")[0] + ".cnf"
# exporter au format DIMACS
save_dimacs(cnf, output_filename)