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 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(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)
def dijkstra_red(grafo, origen, destino): '''Dijkstra para hallar el camino mas corto''' no_visitados = Heap(tamanio_grafo(grafo)) camino = Pila() aux = grafo.inicio while aux is not None: if aux.info.nombre == origen: arribo_heap(no_visitados, [aux, None], 0) else: arribo_heap(no_visitados, [aux, None], inf) aux = aux.sig while not heap_vacio(no_visitados): dato = atencion_heap(no_visitados) apilar(camino, dato) aux = dato[1][0].adyacentes.inicio while aux is not None: pos = busqueda_heap_red(no_visitados, aux.destino) if no_visitados.vector[pos][0] > dato[0] + aux.info: no_visitados.vector[pos][1][1] = dato[1][0].info.nombre cambiar_prioridad(no_visitados, pos, dato[0] + aux.info) aux = aux.sig return camino
# barrido_cola(CS) # print('') CN = Cola() colaneg(CN, 10) # print('Cola de numeros enteros positivos y negativos') # barrido_cola(CN) # print('') CC = Cola() colacaracteres(CC, 50000) # print('Cola de caracteres') # barrido_cola(CC) # print('') PN = Pila() pilaint(PN, 10) # print('Pila de numeros enteros') # barrido_pila(PN) # print('') # EJ 1 def vocales(C): '''Elimina las vocales de una cola''' Caux = Cola() while not cola_vacia(C): x = atencion(C) if ord(x.lower()) != 97 and ord(x.lower()) != 101 and ord( x.lower()) != 105 and ord(x.lower()) != 111 and ord(