From a83a1723fdda64c350f8e1e77603aee3571f67fd Mon Sep 17 00:00:00 2001 From: Johan LACHENAL Date: Wed, 19 Oct 2022 11:46:49 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9paration=20des=20cryptarithmes,=20toutes?= =?UTF-8?q?=20les=20op=C3=A9rations=20fonctionnent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EnigmePython/cryptarithme.py | 35 +++++++++++++++++++++-------------- EnigmePython/itertools | 0 EnigmePython/np | 0 EnigmePython/re | 0 4 files changed, 21 insertions(+), 14 deletions(-) mode change 100644 => 100755 EnigmePython/cryptarithme.py create mode 100644 EnigmePython/itertools create mode 100644 EnigmePython/np create mode 100644 EnigmePython/re 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