コード例 #1
0
 def test_update_from_list_res(self):
     """ -- Accede a un elemento de la lista, modifica su valor y verifica que devuelva 1
     """
     l=LinkedList()
     add(l,"hola")
     add(l,"jorge")
     res=update(l,"pepe",1)
     self.assertEqual(res,1)
コード例 #2
0
 def test_access_from_list(self):
     """ -- Accede a un elemento en una lista y verifica que acces() devuelva el valor correcto
     """
     L=LinkedList()
     add(L,"hola")
     add(L,"jorge")
     res=access(L,1)
     self.assertEqual(res,"hola")
コード例 #3
0
 def test_update_from_list(self):
     """ -- Accede a un elemento de la lista y modifica su valor y luego verifica que sea se haya actualizado con dicho valor
     """
     l=LinkedList()
     add(l,"hola")
     add(l,"jorge")
     update(l,"pepe",1)
     self.assertEqual(l.head.nextNode.value,"pepe")
コード例 #4
0
 def test_update_from_list_out_of_range(self):
     """ -- Accede a un elemento fuera dede la lista, modifica su valor y verifica que devuelva False
     """
     L = LinkedList()
     add(L, "hola")
     add(L, "jorge")
     res = update(L, "pepe", 4)
     self.assertEqual(res, None)
コード例 #5
0
ファイル: aEstrella.py プロジェクト: Bouger/AEstrella
    def mejorCamino(self):
        menorValor = 0
        ultimaPosicion = -555  # En caso de que se necesite ir a la ultima posición, se la guarda.
        seEncontroComparacion = False
        seEncontroPosicion = False
        for i in range(0, len(self.agent.decisiones)):
            if (self.agent.decisiones[i] != -1):
                if (self.agent.ultimaPosicion != i):
                    #print("Empezando por ",i)
                    menorValor = i
                    seEncontroComparacion = True
                    break
                else:
                    ultimaPosicion = i
        if (seEncontroComparacion == False):
            menorValor = ultimaPosicion
        for i in range(menorValor + 1, len(self.agent.decisiones)):
            if (self.agent.decisiones[i] < self.agent.decisiones[menorValor]
                    and self.agent.decisiones[i] != -1):
                if (self.agent.ultimaPosicion != i):
                    menorValor = i
                    seEncontroPosicion = True
                else:
                    #print("Guardando ultimaposicion: ", i)
                    ultimaPosicion = i
        if (seEncontroPosicion == False):
            if (seEncontroComparacion == False):
                #print("Se necesita la ultima posicion: ", i, ", reemplazando: ", menorValor)
                menorValor = ultimaPosicion

        self.guardarUltimaUbicacion(menorValor)
        if (menorValor == 0):
            #print("arriba", " menorvalor: " , menorValor)
            self.agent.posicionX = self.agent.posicionX - 1
        elif (menorValor == 1):
            # print("abajo", " menorvalor: " , menorValor)
            self.agent.posicionX = self.agent.posicionX + 1
        elif (menorValor == 2):
            #print("izq", " menorvalor: " , menorValor)
            self.agent.posicionY = self.agent.posicionY - 1
        else:
            # print("der" , " menorvalor: " , menorValor)
            self.agent.posicionY = self.agent.posicionY + 1

        # Las siguientes LinkedList son utilizadas para guardar las posiciones donde debe mostrarse una flecha por donde pasa el Agente.
        L = linkedlist.LinkedList()
        newNode = linkedlist.Node()
        newNode.value = self.agent.posicionX
        L.head = newNode
        newNode2 = linkedlist.Node()
        newNode2.value = self.agent.posicionY
        L.head.nextNode = newNode2
        newNode3 = linkedlist.Node()
        newNode3.value = menorValor
        L.head.nextNode.nextNode = newNode3
        linkedlist.add(self.caminoHecho, L)
コード例 #6
0
def heapify(BH,L):
    """ Dada una lista crea un heap con complejidad temporal O(n)
    
    """
    i = linkedlist.length(L) // 2
    BH.bheaplist.head = L.head 
    linkedlist.add(BH.bheaplist,0)
    while (i > 0):
        shiftDown(BH,i)
        i = i - 1
コード例 #7
0
def insert(BH,k):
    """ Inserta un elemento en el heap. Si la lista esta vacia, se crea un elemento 0. Este ultimo no se utiliza,
        pero facilita las operaciones matematicas para acceder a los padres e hijos. 
    """
    pos=linkedlist.length(BH.bheaplist)
    if pos==0:
        linkedlist.add(H.bheaplist,0)
        pos=pos+1
    linkedlist.insert(BH.bheaplist,k,pos)
    currentsize=linkedlist.length(BH.bheaplist)-1
    shiftUp(BH,currentsize)
コード例 #8
0
 def test_search_element_from_list(self):
     """ -- Busca  elemento en una lista con un unico elemento y verificar que encuentre la posicion
     """
     L = LinkedList()
     add(L, "hola")
     add(L, "jorge")
     add(L, "como")
     res = search(L, "hola")
     self.assertEqual(res, 2)
コード例 #9
0
ファイル: heap_sort.py プロジェクト: Brunidas/Algo1
def heapsort(L):
    BH = Bheap()
    listaInterna = linkedlist.LinkedList()

    #copiar valores
    for i in range(linkedlist.length(L) - 1, -1, -1):
        linkedlist.add(listaInterna, linkedlist.access(L, i))

    heapify(BH, listaInterna)

    for i in range(length(BH)):
        if length(BH) == 1:
            primero = linkedlist.access(BH.bheaplist, 1)
            linkedlist.add(listaInterna, primero)
        else:
            shiftDown(BH, 1)

            # intercambia el primero con el ultimo
            primero = linkedlist.access(BH.bheaplist, 1)
            ultimo = linkedlist.access(BH.bheaplist, length(BH))

            linkedlist.update(BH.bheaplist, primero, length(BH))
            linkedlist.update(BH.bheaplist, ultimo, 1)

            # se coloco esta liena para que sea mas facil leer el codigo
            ultimo = primero

            # se agrega el primero a listaInterna y se elimina el ultimo elemento
            # del Bheap
            linkedlist.add(listaInterna, ultimo)
            linkedlist.delete(BH.bheaplist, ultimo)

    # actualizar valores
    for i in range(linkedlist.length(L)):
        linkedlist.update(L, linkedlist.access(listaInterna, i), i)


# URL : https://repl.it/@BrunoFuentes/Binary-Heaps-y-HeapSort
コード例 #10
0
def push(S, element):
    add(S, element)
    return
コード例 #11
0
ファイル: main.py プロジェクト: Brunidas/Algo1
from algo1 import *
from binary_heap import *
from heap_sort import *

import linkedlist

L = linkedlist.LinkedList()
linkedlist.add(L, 66)
linkedlist.add(L, 72)
linkedlist.add(L, 20)
linkedlist.add(L, 12)
linkedlist.add(L, 47)

linkedlist.printLinkedList(L)
heapsort(L)
print("- - -")
linkedlist.printLinkedList(L)
コード例 #12
0
def enqueue(Q, element):
  add(Q, element)

  return
コード例 #13
0
    BH.bheaplist.head = L.head 
    linkedlist.add(BH.bheaplist,0)
    while (i > 0):
        shiftDown(BH,i)
        i = i - 1

def length(BH):
    return linkedlist.length(BH.bheaplist)-1

if __name__ == "__main__":
    H=Bheap()
    insert(H,8)
    insert(H,1)
    insert(H,5)
    insert(H,4)
    print(H)
    minimun=delMax(H)
    print(H)
    print("----")
    L=linkedlist.LinkedList()
    linkedlist.add(L,4)
    linkedlist.add(L,3)
    linkedlist.add(L,2)
    linkedlist.add(L,1)
    linkedlist.add(L,12)
    linkedlist.add(L,255)
    linkedlist.add(L,1000)
    print(L)
    heapify(H,L)
    print(H)