diff --git a/EnigmePython/cryptarithme.py b/EnigmePython/cryptarithme.py old mode 100644 new mode 100755 index fad244de..4521116c --- a/EnigmePython/cryptarithme.py +++ b/EnigmePython/cryptarithme.py @@ -58,10 +58,12 @@ def cryptarithmeGenerique (s): # print(ListeOperateurs) # associe à une lettre ses possibilités - for i in range(0,len(lettres)): - ListeLettres.append([lettres[i],intvar(0,9, shape=1)]) - # print(ListeLettres) + if(lettres[i] in [ListeMots[y][0] for y in range(0,len(ListeMots))]): + ListeLettres.append([lettres[i],intvar(1,9, shape=1)]) + else: + ListeLettres.append([lettres[i],intvar(0,9, shape=1)]) + #print(ListeLettres) # associe pour chaque mot une liste des positions des variables contenu dans ListeLettres @@ -98,13 +100,14 @@ def cryptarithmeGenerique (s): BigFirstEquationConstraintPart=ConstraintAssemblingList[0] for i in range(0,len(ListeOperateurs)): if(ListeOperateurs[i]=='+'): - BigFirstEquationConstraintPart = BigFirstEquationConstraintPart + [ConstraintAssemblingList[i+1]] + BigFirstEquationConstraintPart = BigFirstEquationConstraintPart + ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='-'): - BigFirstEquationConstraintPart = BigFirstEquationConstraintPart - [ConstraintAssemblingList[i+1]] + BigFirstEquationConstraintPart = BigFirstEquationConstraintPart - ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='*'): - BigFirstEquationConstraintPart = BigFirstEquationConstraintPart * [ConstraintAssemblingList[i+1]] + BigFirstEquationConstraintPart = BigFirstEquationConstraintPart * ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='/'): - BigFirstEquationConstraintPart = BigFirstEquationConstraintPart / [ConstraintAssemblingList[i+1]] + BigFirstEquationConstraintPart = BigFirstEquationConstraintPart / ConstraintAssemblingList[i+1] + print(BigFirstEquationConstraintPart) if(ListeOperateurs[i]=='='): equalposition=i break @@ -115,13 +118,14 @@ def cryptarithmeGenerique (s): BigSecondEquationConstraintPart=ConstraintAssemblingList[equalposition+1] for i in range(equalposition,len(ListeOperateurs)): if(ListeOperateurs[i]=='+'): - BigSecondEquationConstraintPart = BigSecondEquationConstraintPart + [ConstraintAssemblingList[i+1]] + BigSecondEquationConstraintPart = BigSecondEquationConstraintPart + ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='-'): - BigSecondEquationConstraintPart = BigSecondEquationConstraintPart - [ConstraintAssemblingList[i+1]] + BigSecondEquationConstraintPart = BigSecondEquationConstraintPart + -ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='*'): - BigSecondEquationConstraintPart = BigSecondEquationConstraintPart * [ConstraintAssemblingList[i+1]] + BigSecondEquationConstraintPart = BigSecondEquationConstraintPart * ConstraintAssemblingList[i+1] if(ListeOperateurs[i]=='/'): - BigSecondEquationConstraintPart = BigSecondEquationConstraintPart / [ConstraintAssemblingList[i+1]] + BigSecondEquationConstraintPart = BigSecondEquationConstraintPart / ConstraintAssemblingList[i+1] + print(BigSecondEquationConstraintPart) # print(BigSecondEquationConstraintPart) # Création du model et de ses contraintes @@ -149,6 +153,9 @@ def cryptarithmeGenerique (s): else: print("No solution found") -cryptarithmeGenerique("SEND + MORE = MONEY"); -cryptarithmeGenerique("HUIT + HUIT = SEIZE"); -cryptarithmeGenerique("UN + UN + NEUF = ONZE"); \ No newline at end of file +cryptarithmeGenerique("SEND + MORE = MONEY") +cryptarithmeGenerique("HUIT + HUIT = SEIZE") +cryptarithmeGenerique("UN + UN + NEUF = ONZE") +cryptarithmeGenerique("UN + TROIS - NEUF = ONZE") +cryptarithmeGenerique("UN * UN = ONZE") +cryptarithmeGenerique("UNN / UN = UN") \ No newline at end of file diff --git a/EnigmePython/itertools b/EnigmePython/itertools new file mode 100644 index 00000000..e69de29b diff --git a/EnigmePython/np b/EnigmePython/np new file mode 100644 index 00000000..e69de29b diff --git a/EnigmePython/re b/EnigmePython/re new file mode 100644 index 00000000..e69de29b