def eliminar(c): c = conversor.desencriptarDatos(c) fecha = cargar.validarFecha() try: buscar.existe(buscar.busqueda(0, c.keys()), fecha) clave = [] funciones.imprimirCartel('\nNombre del cumpleañero: ') clave.append(fecha) clave.append(funciones.leer()) tupla = (clave[0], clave[1]) funciones.imprimirCartel('\nTipo de contacto: ') tipoContacto = funciones.leer() funciones.imprimirCartel('\nMedio de contacto: ') medioContacto = funciones.leer() lis = [tipoContacto, medioContacto] if len(c[tupla]) <= 1: c.pop(tupla) else: c[tupla].remove(lis) funciones.imprimirCartel('\nSe elimino correctamente.\n') except (KeyError, IndexError, AttributeError): funciones.imprimirCartel( '\n¡ERROR!: La fecha ingresada no existe. Vuelva a intentarlo.\n') finally: c = conversor.encriptarDatos(c) funciones.guardar('MiCalendario.txt', c) return c
def obtenerDatos(c): clave = [] funciones.imprimirCartel('\n** CARGAR UN CUMPLEAÑOS **\n') try: fe = validarFecha() clave.append(fe) except (UnboundLocalError, AttributeError): return c funciones.imprimirCartel('\nNombre del cumpleañero: ') clave.append(funciones.leer()) tupla = (clave[0], clave[1]) funciones.imprimirCartel('\nTipo de contacto: ') tipoContacto = funciones.leer() funciones.imprimirCartel('\nMedio de contacto: ') medioContacto = funciones.leer() lis = [tipoContacto, medioContacto] if (agregarCumpleanios(c, lis, tupla)): funciones.imprimirCartel('\nSe agrego correctamente.\n\n') return c
def busquedaPorNombre(c): aux = conversor.desencriptarDatos(c) funciones.imprimirCartel('\nPor favor ingrese el nombre a buscar: ') nombre = funciones.leer() try: if existeClave(1, aux, nombre): funciones.imprimirCartel('\nLas personas con nombre ' + nombre + ' registradas, son:\n') imprimirParaDato(nombre, aux, 1) else: funciones.imprimirCartel('\nEl nombre ' + nombre + ' no existe.\n') except (IndexError): funciones.imprimirCartel('\nEl nombre ' + nombre + ' no existe.\n')
def validarFecha(): formato = '%d/%m/%Y' funciones.imprimirCartel( '\nRespetando el formato "dd/mm/aaaa", ingrese la fecha del cumpleañero: ' ) try: stringFecha = funciones.leer() fecha = funciones.instanciarFecha(stringFecha).strftime(formato) if fecha == False: raise AttributeError else: return fecha except (AttributeError): funciones.imprimirCartel( '\n¡ERROR!: La fecha es inválida. Vuelva a intentarlo.\n\n') raise AttributeError
from time import perf_counter import arbol import funciones archivo = funciones.leer("Ingrese nombre del archivo: ") #print (len(archivo)) tiempos = [] ListaLigada = None for casos in archivo: start = perf_counter() # Inicio conteo nodo = arbol.NodeLL(casos[0]) # creamos elemeto nodo ListaLigada = arbol.Listaligada(nodo) # insertamos nodo a la lista casos.pop(0) for elemento in casos: nodo = arbol.NodeLL(elemento) ListaLigada.Insertar(nodo) # print (ListaLigada.insertados) # muestra las inserciones en la lista stop = perf_counter() tiempos.append([start, stop]) print("\n") i = 1 for ti in tiempos: print("tiempo insercion lista ligada ", i, ": ", ti[1] - ti[0]) i += 1 tiempos = []
def automatas() : if request.method == 'GET' and switch == False: print(f'{bcolors.FAIL}No se ha creado ningún automata aún.\n{bcolors.ENDC}') return redirect('/') message0 = '' message1 = '' message2 = '' inputs = inputStrings() alerta = 'alert-success' varGlobales = globals() if request.method == 'POST' : if inputs.inputString1.data : if validarInput(automata1, inputs.inputString1.data) == True : message1 = leer(automata1, inputs.inputString1.data) else : alerta = 'alert-danger' message1 = 'La cadena "'+str(inputs.inputString1.data)+'" no es válida para el automata.' if inputs.inputString2.data : if validarInput(automata2, inputs.inputString2.data) == True : message2 = leer(automata2, inputs.inputString2.data) else : alerta = 'alert-danger' message2 = 'La cadena "'+str(inputs.inputString2.data)+'" no es válida para el automata.' if request.form.get('AFNDtoAFD1', True) == 'AFND a su AFD mínimo' : if AFND1 == True : varGlobales['automata1'] = AFNDtoAFD(automata1) varGlobales['AFND1'] = False message1 = 'El automata 1 ha sido convertido a su equivalente AFD y minimizado.' print(bcolors.OKGREEN+message1+bcolors.ENDC+'\n') else: alerta = 'alert-warning' message1 = 'El automata 1 ya es AFD, pero se ha simplificado.' print(bcolors.WARNING+message1+bcolors.ENDC+'\n') varGlobales['automata1'] = simplificar(automata1) if request.form.get('AFNDtoAFD2', True) == 'AFND a su AFD mínimo' : if AFND2 == True : varGlobales['automata2'] = AFNDtoAFD(automata2) varGlobales['AFND2'] = False message2 = 'El automata 2 ha sido convertido a su equivalente AFD y minimizado.' print(bcolors.OKGREEN+message2+bcolors.ENDC+'\n') else: alerta = 'alert-warning' message2 = 'El automata 2 ya es AFD, pero se ha simplificado.' print(bcolors.WARNING+message2+bcolors.ENDC+'\n') varGlobales['automata2'] = simplificar(automata2) if request.form.get('complemento1', True) == 'Complemento de automata 1' : if AFND1 == False : if len(list(automata1.final_states)) < len(list(automata1.states)) : varGlobales['automata1'] = complemento(automata1) message1 = 'Se ha obtenido el complemento del Automata 1.' else : alerta = 'alert-danger' message1 = 'El complemento del automata 1 no existe.' else : alerta = 'alert-danger' message1 = 'El Automata 1 es AFND.' if request.form.get('complemento2', True) == 'Complemento de automata 2' : if AFND2 == False : if len(list(automata2.final_states)) < len(list(automata2.states)) : varGlobales['automata2'] = complemento(automata2) message2 = 'Se ha obtenido el complemento del Automata 2.' else : alerta = 'alert-danger' message2 = 'El complemento del automata 2 no existe.' else : alerta = 'alert-danger' message2 = 'El Automata 2 es AFND.' if request.form.get('union', True) == 'Unión entre 1 y 2' or inputs.inputUnion.data or request.form.get('AFNDtoAFDUnion', True) == 'AFND a su AFD mínimo' : global automataUnion global tipoUnion if request.form.get('union', True) == 'Unión entre 1 y 2' : automataUnion = union(automata1, AFND1, automata2, AFND2) tipoUnion = True if request.form.get('AFNDtoAFDUnion', True) == 'AFND a su AFD mínimo' and tipoUnion == True : automataUnion = AFNDtoAFD(automataUnion) tipoUnion = False elif tipoUnion == False : automataUnion = simplificar(automataUnion) if inputs.inputUnion.data : if validarInput(automataUnion, inputs.inputUnion.data) == True : message0 = leer(automataUnion, inputs.inputUnion.data) else : alerta = 'alert-danger' message0 = 'La cadena "'+str(inputs.inputUnion.data)+'" no es válida para el automata.' auU = base64.b64encode(draw(automataUnion,tipoUnion,'union')).decode('utf-8') imprimirAutomata(automataUnion,'AFND') return render_template('union.html', union = auU, message0 = message0, alerta = alerta, inputs = inputs) if request.form.get('concatenacion', True) == 'Concatenación entre 1 y 2' or inputs.inputCon.data or request.form.get('AFNDtoAFDCon', True) == 'AFND a su AFD mínimo' : global automataCon global tipoCon if request.form.get('concatenacion', True) == 'Concatenación entre 1 y 2' : automataCon = concatenacion(automata1, AFND1, automata2, AFND2) tipoCon = True if request.form.get('AFNDtoAFDCon', True) == 'AFND a su AFD mínimo' and tipoCon == True : automataCon = AFNDtoAFD(automataCon) tipoCon = False elif tipoCon == False : automataCon = simplificar(automataCon) if inputs.inputCon.data : if validarInput(automataCon, inputs.inputCon.data) == True : message0 = leer(automataCon, inputs.inputCon.data) else : alerta = 'alert-danger' message0 = 'La cadena "'+str(inputs.inputCon.data)+'" no es válida para el automata.' auC = base64.b64encode(draw(automataCon,tipoCon,'concatenacion')).decode('utf-8') imprimirAutomata(automataCon,'AFND') return render_template('concatenacion.html', concatenacion = auC, message0 = message0, alerta = alerta, inputs = inputs) if (request.form.get('interseccion', True) == 'Intersección entre 1 y 2' or inputs.inputInter.data or request.form.get('minifyInter', True) == 'AFND a AFD mínimo') and validarInter(automata1, automata2) == True : global automataInter global tipoInter if request.form.get('interseccion', True) == 'Intersección entre 1 y 2' : automataInter = interseccion(automata1, AFND1, automata2, AFND2) tipoInter = False if len(list(automataInter.states)) == len(list(automata1.states)) : tipoInter = AFND1 if len(list(automataInter.states)) == len(list(automata2.states)) : tipoInter = AFND2 if inputs.inputInter.data : if validarInput(automataInter, inputs.inputInter.data) == True : message0 = leer(automataInter, inputs.inputInter.data) else : alerta = 'alert-danger' message0 = 'La cadena "'+str(inputs.inputInter.data)+'" no es válida para el automata.' if request.form.get('minifyInter', True) == 'AFND a AFD mínimo' : if tipoInter == True : automataInter = AFNDtoAFD(automataInter) automataInter = simplificar(automataInter) message0 = 'Se ha simplificado el automata a su AFND mínimo' else : automataInter = simplificar(automataInter) message0 = 'El automata ya es AFD pero see ha simplificado a su equivalente mínimo' auI = base64.b64encode(draw(automataInter,tipoInter,'interseccion')).decode('utf-8') imprimirAutomata(automataInter,'AFD') return render_template('interseccion.html', interseccion = auI, message0 = message0, alerta = alerta, inputs = inputs) elif validarInter(automata1, automata2) == False and request.form.get('interseccion', True) == 'Intersección entre 1 y 2' : alerta = 'alert-danger' message0 = 'La intersección entre los dos automatas no existe, debido a que ninguno posee un lenguaje regular para su complemento.' print(bcolors.FAIL+message0+bcolors.ENDC) imprimirAutomata(automata1, tipo1) imprimirAutomata(automata2, tipo2) au1 = base64.b64encode(draw(automata1,AFND1,'automata1')).decode('utf-8') au2 = base64.b64encode(draw(automata2,AFND2,'automata2')).decode('utf-8') return render_template('automatas.html', inputs = inputs, message0 = message0, message1 = message1, message2 = message2, automata1 = au1, automata2 = au2, alerta = alerta)
from time import perf_counter import arbol import funciones listas = funciones.leer("Ingrese nombre del archivo(lista ligada): ") print (len(listas)) ListaLigada = None #start = perf_counter() # Inicio conteo for casos in listas: nodo = arbol.NodeLL(casos[0]) # creamos elemeto nodo ListaLigada = arbol.Listaligada(nodo) # insertamos nodo a la lista casos.pop(0) for elemento in casos: nodo = arbol.NodeLL(elemento) ListaLigada.Insertar(nodo) print (ListaLigada.insertados) # muestra las inserciones en la lista #stop = perf_counter() #print ("\n") #print (start, stop) # Finaliza conteo #print ("Tiempo: ", stop-start)
from time import perf_counter import arbol import funciones #tiempos = [] archivo = funciones.leer("Ingrese nombre del archivo(Arbol AVL): ") for lista in archivo: h = 0 print(len(lista)) raiz = arbol.Nodo(lista[h]) #start = perf_counter() # Inicio conteo Arbol = arbol.AVL(raiz) funciones.Mostrar(Arbol, "AVL") h += 1 while h < len(lista): # Recorrer lista elemento = arbol.Nodo(lista[h]) Arbol.Insertar(elemento) funciones.Recorrer(Arbol.root) funciones.Mostrar(Arbol, "AVL") h += 1 #stop = perf_counter() # Finaliza conteo #tiempos.append([start,stop]) print("\n\n") #for ti in tiempos: # print(ti[1]-ti[0])