def dijkstra(self, ver_origen, ver_destino):
     """Algoritmo de Dijkstra para hallar el camino mas corto."""
     no_visitados = HeapMin()
     camino = Pila()
     aux = 0
     while (aux < self.tamanio()):
         vertice = self.inicio.obtener_elemento(ver_origen)
         vertice_aux = self.inicio.obtener_elemento(aux)
         vertice_aux['anterior'] = None
         if (vertice_aux['info'] == vertice['info']):
             no_visitados.arribo([vertice_aux['info'], None], 0)
         else:
             no_visitados.arribo([vertice_aux['info'], None], inf)
         aux += 1
     while (not no_visitados.vacio()):
         dato = no_visitados.atencion()
         camino.apilar(dato)
         pos_aux = self.buscar_vertice(dato[1][0])
         vertice_aux = self.inicio.obtener_elemento(pos_aux)
         aristas = 0
         while (aristas < vertice_aux['aristas'].tamanio()):
             arista = vertice_aux['aristas'].obtener_elemento(aristas)
             pos_heap = no_visitados.busqueda(arista['destino'])
             if (pos_heap is not None
                     and no_visitados.elementos[pos_heap][0] >
                     dato[0] + arista['peso']):
                 no_visitados.elementos[pos_heap][1][1] = dato[1][0]
                 nuevo_peso = dato[0] + arista['peso']
                 no_visitados.cambiar_prioridad(pos_heap, nuevo_peso)
             aristas += 1
     # print(no_visitados.elementos)
     return camino
    def __init__(self, planeta, capturado, recompensa):
        self.planeta = planeta
        self.capturado = capturado
        self.recompensa = recompensa

    def __str__(self):
        return self.planeta + ' - ' + self.capturado + ' - ' + self.recompensa


boba = Pila()
djarin = Pila()
#cargamos bitacora de Boba Fett

dato = Bitacora('tierra', 'han solo', 10000000)
boba.apilar(dato)
dato = Bitacora('rojo', 'droide', 200)
boba.apilar(dato)
dato = Bitacora('azul', 'enano verde', 10)
boba.apilar(dato)
dato = Bitacora('mercurio', 'asesino', 5542)
boba.apilar(dato)

#cagamos bitacora de Din Djarin
dato = Bitacora('257', 'soldado', 4478)
djarin.apilar(dato)
dato = Bitacora('900', 'luke', 845600)
djarin.apilar(dato)
dato = Bitacora('7882', 'lela', 420)
djarin.apilar(dato)
from tda_pila import Pila, apilar
from random import randint
'''Se tienen dos pilas con personajes de Star Wars, en una los del episodio V de “The empire 
strikes back” y la otra los del episodio VII “The force awakens”. Desarrollar un algoritmo que 
permita obtener la intersección de ambas pilas, es decir los personajes que aparecen en ambos episodios.'''

pila1 = Pila()
pila2 = Pila()
pila_repetido = Pila()
pila1_aux = Pila()

pila1.apilar('enano verde')
pila1.apilar('chiwi')
pila1.apilar('arturo')

#Cargamos personajes pila 2
pila2.apilar('droide')
pila2.apilar('tenebroso')
pila2.apilar('enano verde')

while (not pila1.pila_vacia()):
    aux = pila1.desapilar()
    if (aux == pila2.elemento_cima()):
        pila_repetido.apilar(aux)
        pila2.desapilar()
        print('personaje repetido cargado')
    else:
        pila1_aux.apilar(aux)
        print('no hay coincidencia')

while (not pila2.pila_vacia() and not pila1_aux.pila_vacia()):
Esempio n. 4
0
class Personaje(object):
    nombre, cant_peliculas = '', int

    def __init__(self, nombre, cant_peliculas):
        self.nombre = nombre
        self.cant_peliculas = cant_peliculas

    def __str__(self):
        return self.nombre + '-' + self.cant_peliculas


personaje = Pila()

dato = Personaje('iron man', 6)
personaje.apilar(dato)
dato = Personaje('capitan america', 5)
personaje.apilar(dato)
dato = Personaje('hulk', 9)
personaje.apilar(dato)
dato = Personaje('hormiga', 3)
personaje.apilar(dato)
dato = Personaje('black widow', 4)
personaje.apilar(dato)
dato = Personaje('groot', 5)
personaje.apilar(dato)
dato = Personaje('rocket raccoonn', 5)
personaje.apilar(dato)
dato = Personaje('thor', 6)
personaje.apilar(dato)
dato = Personaje('pantera', 3)