示例#1
0
def ordenados():
    p = Pila()
    p_aux = Pila()
    aux = 0
    elemento = input("Ingrese el elemento (-100 para no cargar mas): ")
    int(elemento)
    while (elemento != -100):
        if pila_llena(p):
            print("No hay mas espacio")
        else:
            if pila_vacia(p):
                apilar(p, elemento)
            else:
                aux = desapilar(p)
                while elemento < aux and not pila_vacia(p):
                    apilar(p_aux, aux)
                    aux = desapilar(p)
                else:
                    if elemento < aux:
                        apilar(p, elemento)
                        apilar(p, aux)
                    else:
                        apilar(p, aux)
                        apilar(p, elemento)
                if not pila_vacia(p_aux):
                    while not pila_vacia(p_aux):
                        apilar(p, desapilar(p_aux))
            elemento = input("Ingrese el elemento (-100 para no cargar mas): ")
            int(elemento)
    barrido(p)
示例#2
0
def buscar_personajes():
    pila = Pila()
    pila_auxiliar = Pila()
    Leia_Organa = False
    Boba_Fett = False
    personajes_sw = [
        'Leia Organa', 'Yoda', 'Palpatine', 'C-3po', 'Darth Maul',
        'Darth Vader', 'Luke Skywalker', 'Chewbacca'
    ]
    for i in range(0, 9):
        star_w = random.choice(personajes_sw)
        apilar(pila, star_w)
    while not pila_vacia(pila):
        m = desapilar(pila)
        if m == 'Leia Organa':
            apilar(pila_auxiliar, m)
            Leia_Organa = True
        if m == 'Boba Fett':
            apilar(pila_auxiliar, m)
            Boba_Fett = True
    while not pila_vacia(pila_auxiliar):
        apilar(pila, desapilar(pila_auxiliar))
    if Leia_Organa == True:
        print('Leia Organa existe en la pila de personajes')
    if Boba_Fett == True:
        print('Boba Fett existe en la pila de personajes')
示例#3
0
def temperaturas(pila):
    pila = Pila()
    pila_aux = Pila()
    t_max = cima(pila)
    t_min = cima(pila)
    t_med = 0
    v_mayores = 0
    v_menores = 0
    print('Temperaturas registradas en el mes:')
    barrido_pila(pila)
    while not pila_vacia(pila):
        dato = desapilar(pila)
        t_med += dato
        if dato < t_min:
            t_min = dato
        if dato > t_max:
            t_max = dato
        apilar(pila_aux, dato)
    grado = tamanio_pila(pila_aux)
    t_med = t_med / grado
    while not pila_vacia(pila_aux):
        dato = desapilar(pila_aux)
        if dato >= t_med:
            v_mayores += 1
        else:
            v_menores += 1
    print('Temperatura minima:', t_min, '°')
    print('Temperatura maxima :', t_max, '°')
    print('El rango de temperatura media:', round(t_med, 2), '°')
    print('Temperaturas mayores e iguales a la media:', v_mayores, '°')
    print('Temperaturas menores a la media:', v_menores, '°')
示例#4
0
def interseccion_personajes():
    pila_5 = Pila()
    pila_7 = Pila()
    pila_aux = Pila()
    e5 = [
        'Luke Skywalker', 'Lando Calrissian', 'Yoda', 'Chewbacca',
        'Emperador Palpatine', 'C3PO'
    ]
    e7 = ['Rey', 'Finn', 'Luke Skywalker', 'Kylo Ren', 'Chewbacca', 'C3PO']
    for i in range(0, len(e5)):
        apilar(pila_5, e5[i])
        apilar(pila_7, e7[i])
    print('Episodio V: The empire strikes back')
    barrido_pila(pila_5)
    print('Episodio VII: The force awakens')
    barrido_pila(pila_7)
    while not pila_vacia(pila_5):
        m = desapilar(pila_5)
        while not pila_vacia(pila_7):
            y = desapilar(pila_7)
            if (m == y):
                print('El personaje ' + str(m) +
                      ' se encuentra en ambos episodios')
            apilar(pila_aux, y)
        while (not pila_vacia(pila_aux)):
            y = desapilar(pila_aux)
            apilar(pila_7, y)
示例#5
0
def temperatura():
    p = Pila()
    p_aux = Pila()
    sum = 0
    c_encima = 0
    c_debajo = 0
    for i in range(0, 30):
        apilar(p, random.randint(15, 27))
    max = desapilar(p)
    min = max
    apilar(p, max)
    while not pila_vacia(p):
        aux = desapilar(p)
        sum = sum + aux
        if aux < min:
            min = aux
        if aux > max:
            max = aux
        apilar(p_aux, aux)
    media = sum / 30
    while not pila_vacia(p_aux):
        aux = desapilar(p_aux)
        if aux > media:
            c_encima += 1
        elif aux < media:
            c_debajo += 1
        apilar(p, aux)
    print("Valor maximo de temperatura: ", max)
    print("Valor minimo de temperatura: ", min)
    print("Promedio del total de los valores: ", media)
    print("Valores por encima de la media: ", c_encima)
    print("Valores por debajo de la media: ", c_debajo)
    print("Lista de los valores: ")
    barrido(p)
示例#6
0
def cartas():
    p = Pila()
    po = Pila()
    pb = Pila()
    pe = Pila()
    pc = Pila()
    palos = ['Oro', 'Basto', 'Copa', 'Espada']
    while not pila_llena(p):
        num = random.randint(1, 13)
        palo = random.choice(palos)
        apilar(p, [num, palo])
    while not pila_vacia(p):
        aux = desapilar(p)
        if aux[1] == "Basto":
            apilar(pb, aux)
        if aux[1] == "Copa":
            apilar(pc, aux)
        if aux[1] == "Oro":
            apilar(po, aux)
        if aux[1] == "Espada":
            apilar(pe, aux)
    print("Mazo de basto")
    barrido(pb)
    print("Mazo de copa")
    barrido(pc)
    print("Mazo de oro")
    barrido(po)
    print("Mazo de espada")
    barrido(pe)
    pe = ordenar_pila(pe)
    print("Mazo de espada ordenados")
    barrido(pe)
 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
示例#8
0
def contar():
    p_voc = Pila()
    p_con = Pila()
    po = Pila()
    parrafo = 'Los hombres no son nada, los principios lo son todo.'
    numeros = '0123456789'
    vocales = 'aeiouAEIOU'
    consonantes = 'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ'
    print(parrafo)
    for dato in parrafo:
        if dato in vocales:
            apilar(p_voc, dato)
        elif dato in consonantes:
            apilar(p_con, dato)
        else:
            apilar(po, dato)

    # A) B) y D)
    voc, cons, o, eb, n = 0, 0, 0, 0, 0
    while not pila_vacia(p_voc):
        desapilar(p_voc)
        voc += 1
    while not pila_vacia(p_con):
        desapilar(p_con)
        cons += 1
    while not pila_vacia(po):
        m = desapilar(po)
        o += 1
        if m == ' ':
            eb += 1
        elif m in numeros:
            n += 1
    print('Cantidad de vocales:', voc)
    print('Cantidad de consonantes:', cons)
    print('Cantidad de otros caracteres:', o)
    print('Cantidad de espacios en blanco:', eb)
    print('Cantidad de numeros:', n)

    # C)
    total = voc + cons + o
    print('Porcentaje de vocales:', round(voc * 100 / total, 2), '%')
    print('Porcentaje de consonantes:', round(cons * 100 / total, 2), '%')

    # E)
    if voc == o:
        print('Igual cantidad de vocales y otros caracteres')
    else:
        print('Cantidades distintas de vocales y otros caracteres')

    # F)
    z = False
    while not pila_vacia(p_con):
        dato = desapilar(p_con)
        if dato == 'z':
            z = True
    if z:
        print('Existen letras Z en el parrafo')
示例#9
0
def ordenar_pila():
    pila = Pila()
    pila_auxiliar = Pila()
    while not pila_vacia(pila):
        dato = random.randint(1, 50)
        if not pila_vacia(pila):
            while not pila_vacia(pila) and cima(pila) >= dato:
                apilar(pila_auxiliar, desapilar(pila))
            apilar(pila, dato)
            while not pila_vacia(pila_auxiliar):
                apilar(pila, desapilar(pila_auxiliar))
            barrido_pila(pila)
示例#10
0
def fibonacci(valor):
    p = Pila()
    p_aux = Pila()
    apilar(p, 0)
    apilar(p, 1)
    for i in range(1, valor):
        f1 = desapilar(p)
        f0 = desapilar(p)
        aux = f1 + f0
        apilar(p, f0)
        apilar(p, f1)
        apilar(p, aux)
    print("Fibonacci de: ", valor)
    barrido(p)
示例#11
0
def pares_impares(p):
    pila_pares = Pila()
    pila_impares = Pila()
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2) == 0:
            apilar(pila_pares, aux)
        else:
            apilar(pila_impares, aux)
    print("Pila de pares:   --INICIO--")
    barrido(pila_pares)
    print("Pila de pares:    --FIN--")
    print("Pila de impares:     --INICIO--")
    barrido(pila_impares)
    print("Pila de impares:      --FIN--")
示例#12
0
def peliculas():
    '''Pila de peliculas y sus datos'''
    pila = Pila()
    c = 0
    titulo = [
        'Reservoir Dogs', 'Bohemian Rhapsody', 'Doctor Strange',
        'Avengers: Infinity War', 'Guardianes de la galaxia'
    ]
    estudio = [
        'Marvel Studios', 'Artisan Entertainment', 'GK Films',
        'Marvel Studios', 'Marvel Studios', 'Marvel Studios'
    ]
    anio = ['1992', '2018', '2016', '2018', '2014']
    for i in range(0, 6):
        title, studio, year = titulo[i], estudio[i], anio[i]
        apilar(pila, [title, studio, year])
    print('Peliculas:')
    barrido_pila(pila)
    while not pila_vacia(pila):
        dato = desapilar(pila)
        if dato[2] == '2014':
            print(str(dato[0]) + ' fue estrenada en 2014')
        if dato[2] == '2018':
            c += 1
        if dato[1] == 'Marvel Studios' and str(dato[2]) == '2018':
            print(str(dato[0]) + ' fue producida por Marvel en el año 2018')
    print('Se estrenaron', c, 'peliculas en 2018')
示例#13
0
def iesimo(pila, pos):
    paux = Pila()
    for i in range(0, pos):
        apilar(paux, desapilar(pila))
    desapilar(pila)
    while not pila_vacia(paux):
        apilar(pila, desapilar(paux))
示例#14
0
def eliminar_elemento(p, pos):
    pila_aux = Pila()
    for i in range(0, pos):
        apilar(pila_aux, desapilar(p))
    desapilar(p)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
示例#15
0
def restringir_valores():
    p = Pila()
    p_aux = Pila()
    while not pila_llena(p):
        apilar(p, random.randint(0, 800))
    print("Lista de valores: ")
    barrido(p)
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2 == 0) or (aux % 3 == 0) or (aux % 5 == 0):
            apilar(p_aux, aux)
    while not pila_vacia(p_aux):
        apilar(p, desapilar(p_aux))
    print("")
    print("Lista de valores que son multiplos de 2, 3 o 5")
    barrido(p)
示例#16
0
def qe_onda_el_enunciado_wtf():
    cola = Cola()
    cola_aux = Cola()
    pila = Pila()
    base = [
        'Base Dantooine', 'Base Eco', 'Cuartel General de la Resistencia',
        'Gran Templo de Massassi', 'Puesto de avanzada Beta'
    ]
    latitud = [73, -23, -37, 45, 4]
    longitud = [-54, 166, -72, 4, 113]
    q1 = radians(randint(-90, 90))
    d1 = radians(randint(-180, 180))
    r = 6371
    c1 = 0
    c2 = 0
    c3 = 0
    for i in range(len(base)):
        arribo(cola, [base[i], randint(10, 200), latitud[i], longitud[i]])
    print('Base - Tamaño de flota - Latitud - Longitud')
    barrido_cola(cola)
    print('La coordenada actual es :', round(q1, 6), ',', round(d1, 6))
    while not cola_vacia(cola):
        x = atencion(cola)
        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(pila, [dist, x[0], x[1]])
        arribo(cola_aux, [x[1], x[0], dist])
    print()
    pila = ordenar(pila)
    c1 = desapilar(pila)
    c2 = desapilar(pila)
    c3 = desapilar(pila)
    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(cola_aux)
    cont = 0
    while not cola_vacia(cola_aux):
        dato = atencion(cola_aux)
        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')
示例#17
0
def invertir(p):
    pila_aux = Pila()
    print('Pila original: ')
    barrido(p)
    while not pila_vacia(p):
        apilar(pila_aux, desapilar(p))
    print('Pila invertida: ')
    barrido(pila_aux)
示例#18
0
def ej_factorial(n):
    pila = Pila()
    aux = 1
    for i in range(1, n + 1):
        apilar(pila, i)
    while not pila_vacia(pila):
        aux = aux * desapilar(pila)
    print('Factorial del numero ingresado: ', str(aux))
示例#19
0
def invertir_cola(cola):
    pila = Pila()
    while not cola_vacia(cola):
        apilar(pila, atencion(cola))
    while not pila_vacia(pila):
        arribo(cola, desapilar(pila))
    print('Cola invertida: ')
    barrido_cola(cola)
示例#20
0
def factorial(num):
    p = Pila()
    aux = 1
    for i in range(1, num + 1):
        apilar(p, i)
    while not pila_vacia(p):
        aux = aux * desapilar(p)
    print('El factorial de ', num, 'es', aux)
示例#21
0
def caminoMasCortoAristasPunto5(grafo, origen, destino, campo=0):
    camino = dijkstraAristasPunto5(grafo, origen, destino, campo)
    pila = Pila()
    while (not pila_vacia(camino)):
        dato = desapilar(camino)
        if (destino == dato[1][0].info):
            apilar(pila, dato[1][0].info)
            destino = dato[1][1]
    while (not pila_vacia(pila)):
        print(desapilar(pila))
示例#22
0
def palabra_invertida(cadena):
    p = Pila()
    aux = len(cadena)
    cadena_aux = ''
    for i in range(0, aux):
        car = cadena[i]
        apilar(p, car)
    while not pila_vacia(p):
        cadena_aux = cadena_aux + desapilar(p)
    print(cadena_aux)
示例#23
0
def inversa(palabra):
    pila = Pila()
    aux = len(palabra)
    palabra_auxiliar = ''
    for i in range(0, aux):
        c = palabra[i]
        apilar(pila, c)
    while not pila_vacia(pila):
        palabra_auxiliar = palabra_auxiliar + desapilar(pila)
    print(palabra_auxiliar)
示例#24
0
def caminoMasCortoPunto10(grafo, origen, destino, campo=0):
    camino = dijkstraPunto10(grafo, origen, destino, campo)
    pila = Pila()
    while (not pila_vacia(camino)):
        dato = desapilar(camino)
        if (destino == dato[1][0].info['nombre']):
            apilar(pila, dato[1][0].info['nombre'])
            destino = dato[1][1]
    while (not pila_vacia(pila)):
        print(desapilar(pila))
示例#25
0
def palindromo(cadena):
    p = Pila()
    aux = len(cadena)
    cadena_aux = ''
    for i in range(0, aux):
        car = cadena[i]
        apilar(p, car)
    while not pila_vacia(p):
        cadena_aux = cadena_aux + desapilar(p)
    if cadena == cadena_aux:
        print("la palabra es palindromo")
示例#26
0
def palabras():
    serie_palabras = [
        "Guitarra", "Fotocopia", "Roedor", "Fecha", "Batir", "Horno",
        "Compartimiento", "Amazona", "Tabaco"
    ]
    p = Pila()
    p_aux = Pila()
    for i in range(0, len(serie_palabras)):
        apilar(p, serie_palabras[i])
    print("Palabras con mas de 7 caracteres")
    while not pila_vacia(p):
        aux = desapilar(p)
        if len(aux) > 7:
            print(aux)
        apilar(p_aux, aux)
    while not pila_vacia(p_aux):
        apilar(p, desapilar(p_aux))
    print("")
    print("Lista de palabras")
    barrido(p)
示例#27
0
def pila_par(pila):
    paux = Pila()
    aux = 0
    while not pila_vacia(pila):
        aux = desapilar(pila)
        if aux % 2 == 0:
            apilar(paux, aux)
    while not pila_vacia(paux):
        apilar(pila, desapilar(paux))
    print('La pila con numeros pares es: ')
    barrido_pila(pila)
示例#28
0
def objetos_oficina():
    objetos = [
        "escritorio", "silla", "teclado", "mouse", "monitor", "gabinete"
    ]
    peso = [10.5, 5, 0.800, 0.400, 2.5, 5]
    pila_oficina = Pila()
    for i in range(0, len(objetos)):
        apilar(pila_oficina, [peso[i], objetos[i]])
    pila_ordenada = ordenar_pila(pila_oficina)
    print('Pila ordenada')
    barrido(pila_ordenada)
示例#29
0
def pila_pares(p):
    pila_aux = Pila()
    aux = 0
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2) == 0:
            apilar(pila_aux, aux)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
    print('Pila con pares: ')
    barrido(p)
示例#30
0
def palindromo(palabra):
    pila = Pila()
    aux = len(palabra)
    palabra_auxiliar = ''
    for i in range(0, aux):
        c = palabra[i]
        apilar(pila, c)
    while not pila_vacia(pila):
        palabra_auxiliar = palabra_auxiliar + desapilar(pila)
    if palabra == palabra_auxiliar:
        print('es palindromo')