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)
예제 #2
0
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')
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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')
예제 #6
0
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)
예제 #7
0
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
예제 #8
0
# 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(