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()):
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)