def invertir_pilaa(P): C = Cola() while not pila_vacia(P): arribo(C, desapilar(P)) while not cola_vacia(C): apilar(P, atencion(C)) barrido_pila(P)
def punto_3(): pila, nueva_pila = Pila(), Pila() estado = ['Dañado', 'Impecable', 'Destruido'] modelo = ['Mark XLIV', 'Mark XV', 'Mark I', 'Mark V'] peli = ['Iron Man', 'Iron Man 2', 'Iron Man 3', 'Avengers'] for i in range(8): dato = Traje(choice(modelo), choice(estado), choice(peli)) apilar(pila, dato) print('MODELO | ESTADO | PELICULA') barrido_pila(pila) print() while not pila_vacia(pila): aux = desapilar(pila) # a if aux.modelo == 'Mark XLIV': print('El modelo Mark XLIV fue utilizado en', aux.peli) # b if aux.estado == 'Dañado': print(aux.modelo, 'dañado') # d if aux.peli == 'Avengers': print(aux.modelo, 'apareció en avengers') # c if aux.estado == 'Destruido': print('Se elimino', aux.modelo, 'estado:', aux.estado) if aux.estado != 'Destruido': apilar(nueva_pila, aux) print() print('Pila sin trajes dañados') barrido_pila(nueva_pila)
def invertir(C): P = Pila() while not cola_vacia(C): apilar(P, atencion(C)) while not pila_vacia(P): arribo(C, desapilar(P)) print ('pila invertida') barrido_cola(C)
def invertir_cola(C): '''Invierte el contenido de una cola con una pila auxiliar''' P = Pila() while not cola_vacia(C): apilar(P, atencion(C)) while not pila_vacia(P): arribo(C, desapilar(P)) print('Cola invertida') barrido_cola(C)
def palindromo(C): P = Pila() Caux = Cola() while not cola_vacia(C): apilar(P, atencion(C)) while not pila_vacia(P): arribo(Caux, desapilar(P)) barrido_cola(Caux) if (Caux == C): print ('son palindromo') else: print('NO es palindromo')
barrido_amplitud_red(grafo, ori) marcar_no_visitado(grafo) print() pos += 1 # c pc = ['Manjaro', 'Parrot', 'Fedora'] pos = 0 for i in range(len(pc)): dato = pc[pos] pila = dijkstra_red(grafo, dato, 'Impresora') fin = 'Impresora' peso = None print('Camino mas corto desde', dato, 'hasta Impresora') print('---ARRIBO---') while not pila_vacia(pila): dato = desapilar(pila) if peso is None and fin == dato[1][0].info.nombre: peso = dato[0] if fin == dato[1][0].info.nombre: print(dato[1][0].info.nombre) fin = dato[1][1] print('---SALIDA---') print('Distancia mas corta:', peso, 'mb') print() pos += 1 # d print('Algoritmo de Prim para encontrar el arbol de expansión mínimo') bosque = prim_red(grafo)
def punto3(): grafo = Grafo(False) # a insertar_vertice(grafo, 'Guido Rossum') insertar_vertice(grafo, 'Mark Hamill') insertar_vertice(grafo, 'Tom Holland') insertar_vertice(grafo, 'Robert Downey') insertar_vertice(grafo, 'Daisy Ridley') insertar_vertice(grafo, 'Pedro Pascal') insertar_vertice(grafo, 'Adam Driver') # b ori = buscar_vertice(grafo, 'Tom Holland') des = buscar_vertice(grafo, 'Robert Downey') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Daisy Ridley') des = buscar_vertice(grafo, 'Pedro Pascal') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Daisy Ridley') des = buscar_vertice(grafo, 'Adam Driver') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Adam Driver') des = buscar_vertice(grafo, 'Robert Downey') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Guido Rossum') des = buscar_vertice(grafo, 'Pedro Pascal') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Mark Hamill') des = buscar_vertice(grafo, 'Pedro Pascal') insertar_arista(grafo, randint(10000, 50000), ori, des) ori = buscar_vertice(grafo, 'Daisy Ridley') des = buscar_vertice(grafo, 'Mark Hamill') insertar_arista(grafo, randint(10000, 50000), ori, des) '''ori = buscar_vertice(grafo, 'Mark Hamill') des = buscar_vertice(grafo, 'Guido Rossum') insertar_arista(grafo, randint(10000, 50000), ori, des)''' barrido_grafo(grafo) print() # c print('Arbol de expresion Minimo') bosque = prim(grafo) for i in range(0, len(bosque), 2): print(bosque[i], '|', bosque[i + 1]) print() # d def adyacentes_a(vertice): aux = vertice.adyacentes.inicio while aux is not None: if aux.destino == 'Mark Hamill': print('Hay paso entre Guido Rossum y Mark Hamill') break else: print('NO hay paso entre Guido Rossum y Mark Hamill') aux = aux.sig def adyacentes_b(vertice): aux = vertice.adyacentes.inicio while aux is not None: if aux.destino == 'Robert Downey': print('Hay paso directo entre Tom Holland y Robert Downey') break else: print('NO hay paso entre Tom Holland y Robert Downey') aux = aux.sig ori = buscar_vertice(grafo, 'Guido Rossum') if ori is not None: adyacentes_a(ori) print() ori = buscar_vertice(grafo, 'Tom Holland') if ori is not None: adyacentes_b(ori) print() ori = buscar_vertice(grafo, 'Tom Holland') des = buscar_vertice(grafo, 'Robert Downey') if existe_paso(grafo, ori, des): print('Existe paso indirecto entre Tom Holland y Robert Downey') else: print('NO') print() # e vertice = buscar_vertice(grafo, 'Daisy Ridley') if vertice is not None: print('Amigos de Daisy Ridley') adyacentes(vertice) print() # f print( 'Camino con menor cantidad de me gusta partiendo desde Pedro Pascal hasta Adam Driver.' ) camino_mas_corto = dijkstra(grafo, 'Pedro Pascal', 'Adam Driver') fin = 'Adam Driver' mg = None while not pila_vacia(camino_mas_corto): dato = desapilar(camino_mas_corto) if mg is None and fin == dato[1][0].info: mg = dato[0] if fin == dato[1][0].info: print(dato[1][0].info) fin = dato[1][1] print('Cantidad de MG:', mg)
print('BARRIDO AEROPUERTOS') print('Nombre | Latitud | Longuitud | Cantidad de pistas') barrido_grafo(grafo) print() # e print('CAMINOS MAS CORTOS DESDE ARGENTINA A TAILANDIA') print() print('i) por menor distancia') print() camino_mas_corto = dijkstra_distancia(grafo, 'Argentina', 'Tailandia') fin = 'Tailandia' distancia = None print('---ARRIBO---') while not pila_vacia(camino_mas_corto): dato = desapilar(camino_mas_corto) if distancia is None and fin == dato[1][0].info.nombre: distancia = dato[0] if fin == dato[1][0].info.nombre: print(dato[1][0].info.nombre) fin = dato[1][1] print('---SALIDA---') print('Distancia mas corta: ' + str(distancia) + 'km') print() print('ii) por menor duración de tiempo') print() camino_mas_corto = dijkstra_duracion(grafo, 'Argentina', 'Tailandia') fin = 'Tailandia' duracion = None