diff options
author | Pablo 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) |
commit | aa25ea6e2b5588c2a35f24e175e1d0b58f25512b (patch) | |
tree | b58ac17cecb36933e2666e1375ae36c268ac35d5 | |
parent | c6b0926dba0c46f3c15dc988d58d7a11ec2d40f7 (diff) |
Ultima versiĆ³n de Yasim. Desugarizada.
-rw-r--r-- | parentesis.activity/logica.py | 19 |
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) |