-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfenetre.py
125 lines (107 loc) · 3.52 KB
/
fenetre.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
from PyQt5.QtWidgets import *
from PyQt5 import *
import sys
import pickle
from t import *
from t2 import *
from fonctions import *
from bruteforce import *
import numpy
class FenetrePrincipal(QDialog):
global taille_grille
global dico
global reference
global resultat
reference = 0
taille_grille=dict()
dico = dict()
resultat = dict()
def __init__(self,parametres ,parent=None):
global taille_grille
taille_grille=parametres
super(FenetrePrincipal, self).__init__(parent)
self.createWidgets()
def createWidgets(self):
global taille_grille
self.ui = Ui_Principal(taille_grille)
self.ui.setupUi(self)
def domaine(self):
global taille_grille
global dico
global reference
liste_coordonnees = []
liste = []
numero_domaine = int(self.ui.textEdit.toPlainText())
for i in range(taille_grille[1]):
for j in range(taille_grille[1]):
checkBox = self.ui.liste_check[i][j]
if checkBox.isChecked():
checkBox.setChecked(False)
checkBox.setCheckable(False)
checkBox.hide()
liste_coordonnees.append((i,j))
liste.append(numero_domaine)
liste.append(liste_coordonnees)
dico[reference] = liste
print(dico[reference])
reference += 1
def enregistrer_grille(self):
global dico
urlbis = QFileDialog.getSaveFileName(self, "Enregistrer une grille", '.', "Grille MathDoku(*mtku)")
url = urlbis[0]
split = url.split("/")
print(split)
nom_fichier = split[len(split)-1]
with open(nom_fichier + str('.mtku'), 'wb') as fichier:
mon_pickler = pickle.Pickler(fichier)
mon_pickler.dump(dico)
def ouvrir_grille(self):
global dico
urlbis = QFileDialog.getOpenFileName(self,"Ouvrir une grille", '.', "Grille MathDoku(*mtku)")
url = urlbis[0]
print(url)
split = url.split("/")
nom_fichier = split[len(split)-1]
with open(nom_fichier, 'rb') as fichier:
mon_depickler = pickle.Unpickler(fichier)
dico = mon_depickler.load()
print(dico)
def resolution(self):
global dico
global taille_grille
global resultat
for element in range(len(dico)):
valeur = dico[element][0]
nbr_cases = len(dico[element][1])
dico[element].append(combi_possibles(valeur,nbr_cases,taille_grille[1]))
print(dico)
optimize(dico)
optimize(dico)
optimize(dico)
resultat=bruteforce(dico,taille_grille[1])
if resultat[0] :
print('Solved in',resultat[2],'operations and',resultat[3],'secondes \n',numpy.asarray(resultat[1]))
self.close()
def effacer(self):
self.afficher_resultat()
class MathDoku(QDialog):
#global taille_grille
taille_grille=dict()
def __init__(self, parent=None):
super(MathDoku, self).__init__(parent)
self.createWidgets()
def createWidgets(self):
self.ui = Ui_MathDoku()
self.ui.setupUi(self)
def export_taille(self,x):
#global taille_grille
self.taille_grille[1] = x
def clique_ok(self):
self.close()
self.screen2 = FenetrePrincipal(self.taille_grille)
self.screen2.show()
if __name__=='__main__':
app = QApplication(sys.argv)
screen = MathDoku()
screen.show()
app.exec_()