示例#1
0
def unir(b1: Bosque, b2: Bosque) -> Bosque:
    if b1.nodo is None:
        return b2
    if b2.nodo is None:
        return b1
    b3 = Bosque()
    node = b1.nodo
    while node is not None:
        b3.add_arbol(Arbol(node.valor, node.primog))
        node = node.sig_herm
    node = b2.nodo
    while node is not None:
        b3.add_arbol(Arbol(node.valor, node.primog))
        node = node.sig_herm
    return b3
示例#2
0
def CrearVentana():
    raiz = Tk()
    #Configuracion de ventana
    raiz.title("TytuSQL")  #Cambiar el nombre de la ventana
    #raiz.iconbitmap('resources/icon.ico')
    raiz.rowconfigure(0, minsize=800, weight=1)
    raiz.columnconfigure(1, minsize=800, weight=1)
    raiz.config(menu=CrearMenu(raiz), background='silver')

    #Frame del Arbol
    FrameIzquiero = Frame(raiz, relief=RAISED, bd=2)
    FrameIzquiero.pack(side="left", fill="both")
    #Se llama a la clase Arbol
    Arbol(FrameIzquiero)

    #Boton para realizar consulta
    Button(raiz, text="Enviar Consulta").pack(side="top", fill="both")

    #Consola de Salida
    consola = Text(raiz)
    consola.pack(side="bottom", fill="both")
    consola.insert(1.0, "Consola de Salida")
    consola.config(state=DISABLED)

    #Campo de texto
    Campo(raiz).pack(side="right", fill="both", expand=True)

    ###### CREAMOS EL PANEL PARA LAS PESTAÑAS ########
    raiz.mainloop()
def obtenerRecetario():
    '''
	@return arbolRecetas devuelve un estructura de datos arbol que contendra todas las recetas
	Devuelve todo el recetario de la base de datos
	Para obtener todo el recetario necesitamos cargar todo las recetas en la memoria y conservar su contenido
	hasta que se finalize el programa por lo tanto se necesitara una estructurda datos en cual podamos almacenar nuestra informacion
	de manera organizada para puedan ser utlizados de manera eficiente 
	Utilizaresmo una estructuras  de  datos  no  lineales  o estructuras multi-enlazadas se pueden presentar relaciones
	más complejas entre los elementos
	Ulizaremos Arboles binarios de busqueda
	'''
    with open('baseDatosRecetas/recetario.txt', 'r') as recetario:

        nombreReceta = recetario.readline()
        lista = []
        arbolRecetas = Arbol()
        #Una cadena vacia lo representa como Falso
        while (nombreReceta):
            #print(nombreReceta)
            ruta = 'baseDatosRecetas/' + nombreReceta.replace(
                "\n", "") + ".txt"  #quitamos el salto de linea
            #print(ruta)
            #Como ejemplo ulizaremos un lista para probar algunas funcionalidades
            receta = obtenerReceta(ruta)
            #lista.append(receta)
            arbolRecetas.agregar(receta)
            nombreReceta = recetario.readline()

        recetario.close()
        #return lista
        return arbolRecetas
示例#4
0
def main():
    #Creo mi arbol

    miArbol = Arbol()
    #Agrego los valores de mi arbol
    #El primer valor que agregue sera mi raiz de mi arbol
    miArbol.agregar(8)
    #Agregar hijos
    miArbol.agregar(3)
    miArbol.agregar(10)
    miArbol.agregar(1)
    miArbol.agregar(6)
    miArbol.agregar(14)
    miArbol.agregar(4)
    miArbol.agregar(7)
    miArbol.agregar(9)
    #Imprimir arbol en preorden
    miArbol.imprimirPreorden()
    #miArbol.imprimirInorden()
    #Busqueda de un valor especifico
    #Devolvera el nodo subyacente
    print("---------------------------")
    nodo = busqueda(miArbol.obtenerRaiz(), 14)
    print("Nodo con el valor que contiene: ", nodo.val)
    #    print(miArbol.obtenerRaiz().val)
    pass
示例#5
0
文件: ventana.py 项目: Odra99/tytus
def CrearVentana():
    global raiz
    global load
    raiz = Tk()
    #Configuracion de ventana
    raiz.title("TytuDB")  #Cambiar el nombre de la ventana
    #cambiar icono de pantalla
    load = Image.open("../team08/resources/icondb.png")
    render = ImageTk.PhotoImage(load)
    img = Label(raiz, image=render)
    img.image = render
    img.place(x=0, y=0)
    raiz.iconphoto(False, ImageTk.PhotoImage(load))
    #raiz.iconbitmap('resources/icon.ico')
    raiz.configure(bg='gray20')
    raiz.rowconfigure(0, minsize=800, weight=1)
    raiz.columnconfigure(1, minsize=800, weight=1)
    raiz.config(menu=CrearMenu(raiz), background='silver')
    #Frame del Arbol
    FrameIzquiero = Frame(raiz, relief=RAISED, bd=2, bg='gray21')
    FrameIzquiero.pack(side="left", fill="both")
    #Se llama a la clase Arbol
    Arbol(FrameIzquiero)
    #Boton para realizar consulta
    buton1 = Button(raiz,
                    text="Enviar Consulta",
                    bg='#1BA1FD',
                    fg='white',
                    activebackground='slate gray',
                    command=DataQuery).pack(side="top", fill="both")
    #Consola de Salida
    global consola
    consola = Text(raiz, bg='gray7', fg='white', selectbackground="gray21")
    #inactiveselectbackground="green"
    consola.pack(side="bottom", fill="both")
    consola.insert(1.0, "Consola de Salida:")
    consola.config(wrap=WORD)
    consola.config(state=DISABLED)
    ###### CREAMOS EL PANEL PARA LAS PESTAÑAS ########
    global notebook
    global control
    style = ttk.Style()
    style.theme_use("classic")
    style.configure("TNotebook.Tab",
                    background="gray21",
                    font="helvetica 14",
                    foreground='white')
    style.map("TNotebook.Tab",
              background=[("selected", "#0854A9"), ("active", "#0876F1")],
              foreground=[("selected", "#ffffff"), ("active", "#000000")])
    notebook = ttk.Notebook(raiz)
    notebook.pack(side="right", fill="both", expand=True)
    añadir('Nuevo')
    raiz.mainloop()
示例#6
0
def CrearVentana():
    global raiz
    raiz = Tk()
    #Configuracion de ventana
    raiz.title("TytuSQL")  #Cambiar el nombre de la ventana
    #raiz.iconbitmap('resources/icon.ico')
    raiz.configure(bg='gray21')
    raiz.rowconfigure(0, minsize=800, weight=1)
    raiz.columnconfigure(1, minsize=800, weight=1)
    raiz.config(menu=CrearMenu(raiz), background='silver')
    #Frame del Arbol
    FrameIzquiero = Frame(raiz, relief=RAISED, bd=2, bg='gray21')
    FrameIzquiero.pack(side="left", fill="both")
    #Se llama a la clase Arbol
    global bases
    bases = Arbol(FrameIzquiero)
    #Boton para realizar consulta
    Button(raiz,
           text="Enviar Consulta",
           bg='gray',
           fg='white',
           activebackground='slate gray',
           command=enviarQuery).pack(side="top", fill="both")
    #Consola de Salida
    global consola
    consola = Text(raiz, bg='gray7', fg='white', selectbackground="gray21")
    #inactiveselectbackground="green"
    consola.pack(side="bottom", fill="both")
    consola.insert(1.0, "Consola de Salida:")
    consola.config(wrap=WORD)
    consola.config(state=DISABLED)
    ###### CREAMOS EL PANEL PARA LAS PESTAÑAS ########
    global notebook
    global control
    global textos
    global _words
    style = ttk.Style()
    style.theme_use("classic")
    style.configure("TNotebook.Tab",
                    background="gray21",
                    font="helvetica 14",
                    foreground='white')
    style.map("TNotebook.Tab", background=[("selected", "slate gray")])
    notebook = ttk.Notebook(raiz)
    notebook.pack(side="right", fill="both", expand=True)
    añadir('Nuevo')

    b = notebook.select()
    a = notebook.index(b)
    textos[a].text.bind("<KeyRelease>", Spellcheck)
    textos[a].text.bind("<Key>", Spellcheck)
    # initialize the spell checking dictionary. YMMV.
    _words = open("clave").read().split("\n")
    raiz.mainloop()
示例#7
0
def p_init(p):
    'init : instrucciones'
    #p[0] = [p[1]]
    p[0] = Arbol(p[1])
        'código': 9877,
        'ubicación': '1H'
    },
    {
        'nombre': 'Diplodocus',
        'código': 36415,
        'ubicación': '4X'
    },
    {
        'nombre': 'Diplodocus',
        'código': 21583,
        'ubicación': '7Q'
    },
]

arbol_ordnombre = Arbol()
arbol_ordcodigo = Arbol()

# Punto 2: se deben almacenar los datos en dos arboles uno ordenado por nombre y otro por código;
for dinosaurio in datos:
    arbol_ordnombre = arbol_ordnombre.insertar_nodo(dinosaurio['nombre'],
                                                    dinosaurio)

print('Nombre de los dinosaurios ordenados alfabeticamente:')
arbol_ordnombre.inorden()
print()

for codigos in datos:
    arbol_ordcodigo = arbol_ordcodigo.insertar_nodo(codigos['código'], codigos)

print('Dinosaurios ordenados por codigos:')
示例#9
0
	def test_cuando_arbol_vacio_es_true(self):
		arbol = Arbol()

		self.assertTrue(arbol.vacio())
示例#10
0
	def test_devuelve_la_raiz(self):
		arbol = Arbol(2)

		self.assertEqual(arbol.raiz(), 2)
示例#11
0
def compareHashes():
    """ Params: NONE """
    """ Return: NONE """
    """ Compara los dos diccionarios, uno contiene los hashes cargados del archivo hashes.hash y el otro contiene los hashes recien calculados,
    tras dicha comparación los resultados saldran por consola """
    numberOfFilesOK = int()
    numberOfFilesNoOk = int()
    listOfNoMatches = list()
    global report
    arbolActual = Arbol()
    splittedPathsToHash = configDict["Directories to protect"].split(
        ","
    )  # para ser mejor, hacer strip con un for para cada elemento por si acaso
    for path in splittedPathsToHash:
        binaryTreeHash(path, arbolActual)
    tupleTree = arbol.recorrer()
    dictArbol = dict(tupleTree)
    tupleActual = arbolActual.recorrer()
    dictArbolActual = dict(tupleActual)
    #Comprobamos las rutas de los ficheros que hay actualmente en el sistema de archivos con las que había cuando se inició
    #el HIDS para el directorio/s que sea
    value = {k: dictArbol[k] for k in set(dictArbol) - set(dictArbolActual)}
    for fichero in value:
        numberOfFilesNoOk += 1
        cadena = "DIR: " + str(fichero) + " ¡Archivo eliminado detectado!"
        listOfNoMatches.append(cadena)

    value2 = {
        k: dictArbolActual[k]
        for k in set(dictArbolActual) - set(dictArbol)
    }
    for fichero in value2:
        numberOfFilesNoOk += 1
        cadena = "DIR: " + str(fichero) + " ¡Archivo nuevo detectado!"
        listOfNoMatches.append(cadena)
        aux = (fichero, value2[fichero])
        tupleActual.remove(aux)
    #z = {**value, **value2}

    for tupla in tupleActual:
        try:
            nodoGuardado = arbol.buscar(tupla)
            if nodoGuardado.dato[1] == tupla[1]:
                numberOfFilesOK += 1
            else:
                numberOfFilesNoOk += 1
                cadena = "DIR: " + str(tupla[0]) + " ¡Los hashes no coinciden!"
                listOfNoMatches.append(cadena)
        except:
            numberOfFilesNoOk += 1
            cadena = "DIR: " + str(tupla[0]) + " ¡Los hashes no coinciden!"
            listOfNoMatches.append(cadena)
    badIntegrity.append(numberOfFilesNoOk)

    fechaHora = datetime.datetime.now().strftime("%d/%m/%Y, %H:%M:%S")
    graphDate.append(fechaHora)
    str1 = "Número de archivos OK: " + str(numberOfFilesOK)
    str2 = "Número de archivos MODIFICADOS: " + str(numberOfFilesNoOk)

    report.append(fechaHora + "\n")
    report.append(str1 + "\n")
    report.append(str2 + "\n")

    #ESTE PODRÍA QUITARSE
    logging.info(str1)
    logging.info(str2)

    if (listOfNoMatches):
        str3 = "Archivos con integridad comprometida: "
        noMatchesToPrint = list()
        for entry in listOfNoMatches:
            noMatchesToPrint.append("           " + entry)
        logging.warning(str3 + "\n" + '\n'.join(noMatchesToPrint))
        toaster.show_toast("HIDS",
                           "Problema de integridad detectado. Revisar LOG.",
                           duration=verifyInterval,
                           threaded=True)
        sendEmails(str3 + "\n" + '\n'.join(noMatchesToPrint))
        report.append(str3 + "\n" + '\n'.join(noMatchesToPrint))
    report.append(
        "--------------------------------------------------------------------\n"
    )
示例#12
0
from arbol import Arbol
a = Arbol()
a.agrega(50)
a.agrega(18)
a.agrega(74)
a.agrega(7)
a.agrega(22)


def ubicar(nodo, buscado):
    if nodo.contenido == buscado:
        return True
    if buscado < nodo.contenido and nodo.izquierdo is not None:
        return ubicar(nodo.izquierdo, buscado)
    if buscado > nodo.contenido and nodo.derecho is not None:
        return ubicar(nodo.derecho, buscado)
    return False


print(ubicar(a.raiz, 15))
print(ubicar(a.raiz, 22))
示例#13
0
	def test_cuando_arbol_vacio_es_false(self):
		arbol = Arbol()

		self.assertFalse(arbol.find(4))
示例#14
0
	def test_rama_derecha_esperada(self):
		arbol = Arbol(1, Arbol(2, Arbol(4), Arbol(5)), Arbol(3, Arbol(6), Arbol(7)))

		self.assertEqual(arbol.derecha(), Arbol(3, Arbol(6), Arbol(7)))
示例#15
0
	def test_cuando_rama_derecha_vacia_error(self):
		arbol = Arbol(1, Arbol(2), Arbol())

		self.assertRaises(AttributeError, arbol.derecha)
示例#16
0
	def test_rama_izquierda_esperada(self):
		arbol = Arbol(1, Arbol(2, Arbol(4), Arbol(5)), Arbol(3, Arbol(6), Arbol(7)))

		self.assertEqual(arbol.izquierda(), Arbol(2, Arbol(4), Arbol(5)))
示例#17
0
	def test_cuando_rama_izquierda_vacia_error(self):
		arbol = Arbol(1, Arbol(), Arbol(2))

		self.assertRaises(AttributeError, arbol.izquierda)
示例#18
0
	def test_no_hay_raiz_error(self):
		arbol = Arbol()

		self.assertRaises(AttributeError, arbol.raiz)
示例#19
0
	def test_cuando_arbol_mal_formado(self):

		with self.assertRaises(TypeError):
			arbol = Arbol(None, Arbol(2), Arbol(3))
示例#20
0
文件: lib.py 项目: Franr/erdos
 def __init__(self):
     super(Controlador, self).__init__()
     self.contenedor = ErdosBloquePrincipal()
     self.arbol = Arbol(self.contenedor)
示例#21
0
 def nuevo_arbol(self):
     self.contenedorGUI = ErdosBloquePrincipalItem()
     self.arbol = Arbol(self.contenedorGUI.nodo)
示例#22
0
	def test_cuando_encuentra_elemento_es_true(self):
		arbol = Arbol(2, Arbol(43, Arbol(3), Arbol(56)), Arbol(4))

		self.assertTrue(arbol.find(56))
示例#23
0
from tkinter import *
from tkinter import messagebox
from win10toast import ToastNotifier
import smtplib
from pathlib import Path
from arbol import Arbol
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# GLOBALS
configDict = dict()
badIntegrity = list()
graphDate = list()
arbol = Arbol()
report = list()
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
verifyInterval = 0
reportInterval = 0
running = bool()
window = tk.Tk()
entry = ScrolledText(window, width=80, height=20)
logBox = ScrolledText(window, width=80, height=20)
toaster = ToastNotifier()


# Genera una estructura en forma de árbol binario a partir de los directorios escogidos para las comprobaciones de integridad, cada nodo del arbol es una tupla (ruta,hash)
# Donde el hash se realizará de acuerdo al tipo indicado en el fichero de configuración.
def binaryTreeHash(pathName, arbol):
    for root, dirs, files in os.walk(pathName):
示例#24
0
"""
    https://parzibyte.me/blog
"""

from arbol import Arbol

arbol = Arbol("Luis")
arbol.agregar("María José")
arbol.agregar("Maggie")
arbol.agregar("Leon")
arbol.agregar("Cuphead")
arbol.agregar("Aloy")
arbol.agregar("Jack")
nombre = input("Ingresa algo para agregar al árbol: ")
arbol.agregar(nombre)
arbol.preorden()
arbol.inorden()
arbol.postorden()
# Búsqueda
busqueda = input("Busca algo en el árbol: ")
nodo = arbol.buscar(busqueda)
if nodo is None:
    print(f"{busqueda} no existe")
else:
    print(f"{busqueda} sí existe")
    # Aquí tienes en "nodo" toda la información del nodo. Tanto su izquierda, derecha, dato y otros atributos que le hayas agregado

arbol_numeros = Arbol(5)
arbol_numeros.agregar(1984)
arbol_numeros.agregar(60)
arbol_numeros.agregar(10)
示例#25
0
	def test_cuando_el_elemento_no_esta_es_false(self):
		arbol = Arbol(2, Arbol(43, Arbol(3), Arbol(56)), Arbol(4))		
		
		self.assertFalse(arbol.find(1000))
示例#26
0
	def test_cuando_arbol_no_vacio_es_false(self):
		arbol = Arbol(2)

		self.assertFalse(arbol.vacio())
示例#27
0
	def test_inorder_esperado(self):
		arbol = Arbol(1, Arbol(2, Arbol(4), Arbol(5)), Arbol(3, Arbol(6), Arbol(7)))

		self.assertEqual(arbol.inorder(), [4, 2, 5, 1, 6, 3, 7])		
示例#28
0
	def test_espejo_no_modifica_arbol(self):
		arbol = Arbol(1, Arbol(2, Arbol(4), Arbol(5)), Arbol(3, Arbol(6), Arbol(7)))
		otro_arbol = arbol.espejo()

		self.assertNotEqual(arbol, otro_arbol)
示例#29
0
	def test_espejo_de_arbol_vacio_es_vacio(self):
		arbol = Arbol()

		self.assertEqual(arbol.espejo(), Arbol())
示例#30
0
	def test_dos_arboles_distintos_es_false(self):
		arbol = Arbol(1, Arbol(2, Arbol(4), Arbol(5)), Arbol(3, Arbol(6), Arbol(7)))
		otro_arbol = Arbol(1, Arbol(8, Arbol(9), Arbol(13)), Arbol(23, Arbol(65), Arbol(337)))

		self.assertNotEqual(arbol, otro_arbol)