Esempio n. 1
0
 def open_grid(self):
     """
     Ouvre une grille préexistante dans une fenêtre d'édition
     """
     filename = askopenfilename(
         initialdir=".",
         filetypes=(("JSON File", "*.json"), ("All Files", "*.*")),
         title="Choose a file.",
     )
     if filename:
         grid = fio.read_grid(filename)
         self.destroy()
         self.master.change(Editor_Frame,
                            [grid["width"], grid["height"], grid])
if __name__ == "__main__":
    if len(argv) < 3:
        print("Error: incorrect number of arguments", file=stderr)
        print(
            "Usage: {} <name of satsolver> path/to/grid/file path/to/sat/output/file".format(
                argv[0]
            ),
            file=stderr,
        )
        print("Supported satsolvers: minisat, picosat", file=stderr)
        print("Sat output can be read from stdin", file=stderr)
        exit(1)

    # Lire la grille
    grid = read_grid(argv[2])

    # Ouvrir le fichier sat
    if len(argv) == 3:
        satfile = stdin
    else:
        satfile = open(argv[3], "r")

    content = satfile.read()  # Lire le contenu

    # Fermer le fichier
    if len(argv) > 2:
        satfile.close()

    # Parser le contenu
    if argv[1] == "minisat":
Esempio n. 3
0
#!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)