Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/parentesis.activity/parserparentesis.py
diff options
context:
space:
mode:
Diffstat (limited to 'parentesis.activity/parserparentesis.py')
-rw-r--r--parentesis.activity/parserparentesis.py59
1 files changed, 48 insertions, 11 deletions
diff --git a/parentesis.activity/parserparentesis.py b/parentesis.activity/parserparentesis.py
index aefe5fe..237ff41 100644
--- a/parentesis.activity/parserparentesis.py
+++ b/parentesis.activity/parserparentesis.py
@@ -2,7 +2,7 @@ import re
import random
import types
-### Version 0.2
+### Version 0.3
## modulo logico
## Definicion a manopla para formulas de nivel 1
@@ -52,12 +52,9 @@ def testearValidarStringNivelUno():
if errores.count(None):
print "Hay errores de validacion!, verificar str1 .. str11"
else:
- print "TEST OK"
+ print " TEST OK"
print "FIN DEL TEST!"
-if __name__ == "__main__":
- testearValidarStringNivelUno();
-
#notar los parametros opcionales ---remover---
def generarListaNum(cant_num = CANT_NUM, rango_max = 9):
"""genera una lista de tamano cant_num, con numeros entre 2 y rango_max
@@ -102,19 +99,54 @@ def alternarElementosLista(lst1, lst2):
return lista
-### TOTALMENTE INCOMPLETA
+### TO DO : Discriminar segun niveles
def generarCasos(cant_num = CANT_NUM, nivel = 1): ## TO DO!
"""Recibe un numero y devuelve una lista con todos los casos posibles y con
los parentesis bien puestos"""
listaNum = generarListaNum()
listaOp = generarListaOp()
- res = alternarElementosLista(listaNum, listaOp)
-
- if nivel == 1:
- return None
- return None
+ base = alternarElementosLista(listaNum, listaOp)
+ i1 = buscarProxNum(base, 0)
+ res = []
+ while i1 < len(base) : ## mientras tenga sentido poner un '('
+ lst = base[:]
+ lst.insert(i1, '(')
+ i2 = i1 + 6 # lo pongo en la posicion para insertar ')'
+ lst2 = lst[:]
+ lst2.insert(i2, ')')
+
+ aux = listaToString(lst2)
+ if validarString(aux) != None:
+ res.append(aux)
+
+
+ while i2 < len(base): ## chequear si es menor o menor e igual TO DO
+ lst2 = lst[:]
+ i2 += 2
+ lst2.insert(i2, ')')
+ aux = listaToString(lst2)
+ if validarString(aux) != None:
+ res.append(aux)
+
+ i1 = buscarProxNum(base, i1 + 1)
+
+ ## ( 1 * 2 + 3 * 4 + 5 * 6)
+ return res
+
### Ejemplo de devolucion lista = ["(1*2+3)*4 + 5 * 6", "1*2+3 * (4+5)*6"]
+def listaToString(lst):
+ """Transforma una lista de cualquier cosa en un string conformado por la concatenacion de str de cada elemento """
+ texto = ''
+ for x in lst:
+ texto += str(x)
+ return texto
+
+def intToChar(o):
+ """Agarra un elemento, y si es un entero lo convierte a string, sino lo deja como esta"""
+ if types(o) == types.IntType:
+ return str(o)
+
def buscarProxNum(lista, start = 0):
"""Devuelve el proximo indice en la lista donde hay un numero
@@ -141,4 +173,9 @@ listaNum = generarListaNum()
listaOp = generarListaOp()
res = alternarElementosLista(listaNum, listaOp)
+if __name__ == "__main__":
+ testearValidarStringNivelUno()
+ lst = generarCasos()
+ for x in lst:
+ print x