def Haversine(): '''Datos de bases rebeldes proporcionados a un Caza TIE''' C, Caux, P = Cola(), Cola(), Pila() base = [ 'Base Dantooine', 'Base Eco', 'Cuartel General de la Resistencia', 'Gran Templo de Massassi', 'Puesto de avanzada Beta' ] lat = [73, -23, -37, 45, 4] lng = [-54, 166, -72, 4, 113] q1 = radians(randint(-90, 90)) # latitud de origen d1 = radians(randint(-180, 180)) # longitud de origen # q2 = latitud de llegada # d2 = longitud de llegada r = 6371 # en kilometros c1, c2, c3 = 0, 0, 0 for i in range(len(base)): arribo(C, [base[i], randint(10, 200), lat[i], lng[i]]) print('Base | Tamanio de la flota | Latitud | Longitud') barrido_cola(C) print() print('Coordenada actual:', round(q1, 6), ',', round(d1, 6)) while not cola_vacia(C): x = atencion(C) q2 = radians(x[2]) d2 = radians(x[3]) formula = 2 * r * asin( sqrt( sin((q1 - q2) / 2)**2 + cos(q1) * cos(q2) * sin((d1 - d2) / 2)**2)) dist = int(formula) print(x[0] + ' se encuentra a ' + str(dist) + 'km') apilar(P, [dist, x[0], x[1]]) arribo(Caux, [x[1], x[0], dist]) print() P = ordenar_pila(P) c1 = desapilar(P) c2 = desapilar(P) c3 = desapilar(P) print('Las tres bases mas cercanas son:') print(c1[1] + ' se encuentra a ' + str(c1[0]) + 'km') print(c2[1] + ' se encuentra a ' + str(c2[0]) + 'km') print(c3[1] + ' se encuentra a ' + str(c3[0]) + 'km') if c1[2] > c2[2] and c1[2] > c3[2]: print(c1[1] + ' posee la mayor flota aerea') elif c2[2] > c1[2] and c2[2] > c3[2]: print(c2[1] + ' posee la mayor flota aerea') else: print(c3[1] + ' posee la mayor flota aerea') print() barrido_cola(Caux) cont = 0 while not cola_vacia(Caux): dato = atencion(Caux) if dato[0] > cont: cont = dato[0] info = dato print() print(info[1], 'posee la mayor flota(' + str(info[0]) + ')') print('Se encuentra a:', info[2], 'km')
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')
def palindromo(): '''Devuelve True si una palabra es un palindromo''' P = Pila() C = Cola() cad = 'neuquen' palindr = True print(cad) for letra in cad: apilar(P, letra) arribo(C, letra) for i in range(0, tamanio_cola(C)): dato_cola = atencion(C) dato_pila = desapilar(P) if dato_cola != dato_pila: palindr = False if palindr: print(True) else: print(False)
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) for i in range(0, len(bosque), 2):
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('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 print('---ARRIBO---')