Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Moleri <pmoleri@PABLOMOLERI-PC.(none)>2009-07-05 02:56:20 (GMT)
committer Pablo Moleri <pmoleri@PABLOMOLERI-PC.(none)>2009-07-05 02:56:20 (GMT)
commitaa25ea6e2b5588c2a35f24e175e1d0b58f25512b (patch)
treeb58ac17cecb36933e2666e1375ae36c268ac35d5
parentc6b0926dba0c46f3c15dc988d58d7a11ec2d40f7 (diff)
Ultima versiĆ³n de Yasim. Desugarizada.
-rw-r--r--parentesis.activity/logica.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/parentesis.activity/logica.py b/parentesis.activity/logica.py
index 237ff41..dbe23a1 100644
--- a/parentesis.activity/logica.py
+++ b/parentesis.activity/logica.py
@@ -8,7 +8,7 @@ import types
## Definicion a manopla para formulas de nivel 1
pattern1 = "\S*\(\S*\+\S*\)\S*" # ( ... + ... ) al menos un mas en el medio
pattern2 = "(\+\)|\*\)|\(\+|\(\*)" # ni (+ ni (* ni +) ni *)
-pattern3 = "^\(\w*\)$" # parentesis al principio y parentesis al final
+pattern3 = "^\(\S*\)$" # parentesis al principio y parentesis al final
CANT_NUM = 6
def imprimirConfiguracion():
@@ -19,15 +19,18 @@ def imprimirConfiguracion():
#Tal vez deba recibir un parametro NIVEL y en funcion de eso validar o no el string.
-def validarString(s):
+def validarString(s, original):
"""Si el string s es valido segun las convenciones lo devuelve, sino da none
Returns string"""
+
if re.search(pattern2, s):
return None
- if re.search(pattern3, s):
+ elif re.search(pattern3, s):
+ return None
+ elif eval(str(s)) == eval(str(original)): ## Python me obliga a poner str :(
return None
- if re.search(pattern1, s):
+ elif re.search(pattern1, s):
return s
return None # en caso contrario devuelve nada
@@ -36,6 +39,7 @@ def validarString(s):
## en un conjunto de 6 numeros
def testearValidarStringNivelUno():
print "COMIENZA TEST DE VALIDACION DE LECTOR DE STRING..."
+ base = "1*2+4*4+5*6"
str1 = "(1*2+3)*4+5*6"
str2 = "(1*2+3*4)+5*6"
str3 = "(1*2+3*4+5)*6"
@@ -48,7 +52,7 @@ def testearValidarStringNivelUno():
str10= "1*2+3*(4+5)*6"
str11= "1*2+3*(4+5*6)"
listaStr = [str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11]
- errores = [validarString(s) for s in listaStr]
+ errores = [validarString(s, base) for s in listaStr]
if errores.count(None):
print "Hay errores de validacion!, verificar str1 .. str11"
else:
@@ -106,6 +110,7 @@ def generarCasos(cant_num = CANT_NUM, nivel = 1): ## TO DO!
listaNum = generarListaNum()
listaOp = generarListaOp()
base = alternarElementosLista(listaNum, listaOp)
+ baseStr = listaToString(base)
i1 = buscarProxNum(base, 0)
res = []
while i1 < len(base) : ## mientras tenga sentido poner un '('
@@ -116,7 +121,7 @@ def generarCasos(cant_num = CANT_NUM, nivel = 1): ## TO DO!
lst2.insert(i2, ')')
aux = listaToString(lst2)
- if validarString(aux) != None:
+ if validarString(aux, baseStr) != None:
res.append(aux)
@@ -125,7 +130,7 @@ def generarCasos(cant_num = CANT_NUM, nivel = 1): ## TO DO!
i2 += 2
lst2.insert(i2, ')')
aux = listaToString(lst2)
- if validarString(aux) != None:
+ if validarString(aux, baseStr) != None:
res.append(aux)
i1 = buscarProxNum(base, i1 + 1)