Пример #1
0
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
Пример #2
0
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
Пример #3
0
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')
Пример #4
0
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
Пример #5
0
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 = []
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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])