def peliculas():
    '''Pila de peliculas y sus datos'''
    P = Pila()
    Paux = Pila()
    c = 0
    titulo = [
        'Capitan America', 'Relatos Salvajes', 'Bohemian Rhapsody',
        'Doctor Strange', 'Avengers: Infinity War', 'Guardianes de la galaxia'
    ]
    estudio = [
        'Marvel Studios', 'Kramer and Sigman Films', 'GK Films',
        'Marvel Studios', 'Marvel Studios', 'Marvel Studios'
    ]
    anio = ['2016', '2014', '2018', '2016', '2018', '2014']
    for i in range(0, 6):
        title, studio, year = titulo[i], estudio[i], anio[i]
        apilar(P, [title, studio, year])
    print('Peliculas:')
    barrido(P)
    print('')
    while not pila_vacia(P):
        dato = desapilar(P)
        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 anio 2018')
    print('Se estrenaron ' + str(c) + ' peliculas en 2018')
def busqueda_sw():
    '''Busqueda personajes de Star Wars'''
    P = Pila()
    Paux = Pila()
    leia = False
    bf = False
    personajes = [
        'Darth Vader', 'Luke Skywalker', 'Chewbacca', 'Yoda', 'R2D2',
        'Obi-Wan Keobi', 'Han Solo', 'C3PO', 'Leia Organa', 'Jabba el Hutt',
        'Boba Fett'
    ]
    for i in range(0, 10):
        sw = random.choice(personajes)
        apilar(P, sw)
    print('Pila de personajes:')
    barrido(P)
    print('')
    while not pila_vacia(P):
        x = desapilar(P)
        if x == 'Leia Organa':
            apilar(Paux, x)
            leia = True
        if x == 'Boba Fett':
            apilar(Paux, x)
            bf = True
    while not pila_vacia(Paux):
        apilar(P, desapilar(Paux))
    if leia:
        print('Leia Organa se encuentra en la pila')
    else:
        print('Leia Organa no esta almacenada')
    if bf:
        print('Boba Fett se encuentra en la pila')
    else:
        print('Boba Fett no esta almacenado')
def interseccion_sw():
    '''Obtiene los personajes que aparecieron en el episodio V y VII
    de la saga Star Wars'''
    P5 = Pila()
    P7 = Pila()
    Paux = Pila()
    ep5 = [
        'Luke Skywalker', 'Lando Calrissian', 'Yoda', 'Chewbacca',
        'Emperador Palpatine', 'C3PO'
    ]
    ep7 = ['Rey', 'Finn', 'Luke Skywalker', 'Kylo Ren', 'Chewbacca', 'C3PO']
    for i in range(0, 5):
        apilar(P5, ep5[i])
        apilar(P7, ep7[i])
    print('Episodio V: The empire strikes back')
    barrido(P5)
    print('')
    print('Episodio VII: The force awakens')
    barrido(P7)
    print('')
    while not pila_vacia(P5):
        x = desapilar(P5)
        while not pila_vacia(P7):
            y = desapilar(P7)
            if (x == y):
                print('El personaje ' + str(x) +
                      ' se encuentra en ambos episodios')
            apilar(Paux, y)
        while (not pila_vacia(Paux)):
            y = desapilar(Paux)
            apilar(P7, y)
def dioses_griegos():
    '''Inserta el nombre de 'Atenea' en una pila de dioses griegos'''
    P = Pila()
    Paux = Pila()
    pos = 2  # posicion en la lista
    dioses = [
        'Zeus', 'Poseidon', 'Hades', 'Arkantos', 'Apolo', 'Hermes', 'Ares',
        'Persefone', 'Artemisa'
    ]
    for i in range(0, 9):
        apilar(P, dioses[i])
    print('Pila de dioses griegos:')
    barrido(P)
    print('')
    if tamanio(P) > pos + 1:
        i = 0
        while i < pos:
            x = desapilar(P)
            apilar(Paux, x)
            i += 1
        x = apilar(P, 'ATENEA')
        while not pila_vacia(Paux):
            apilar(P, desapilar(Paux))
        barrido(P)
        print('Se inserto a la diosa "Atenea" en la posicion: ' + str(pos))
def cartas():
    '''Pila de cartas de baraja espaniola,
    se debe incrementar el tamanio de la pila a 48 para este ejercicio'''
    P = Pila()
    Pesp = Pila()
    Pbas = Pila()
    Poro = Pila()
    Pcop = Pila()
    palos = ['Espada', 'Basto', 'Oro', 'Copa']
    for i in range(1, 48):
        num = random.randint(1, 12)
        palo = random.choice(palos)
        apilar(P, [num, palo])
    while not pila_vacia(P):
        x = desapilar(P)
        if x[1] == 'Espada':
            apilar(Pesp, x)
        elif x[1] == 'Basto':
            apilar(Pbas, x)
        elif x[1] == 'Oro':
            apilar(Poro, x)
        elif x[1] == 'Copa':
            apilar(Pcop, x)
    print('Mazo de espada')
    barrido(Pesp)
    print('Mazo de basto')
    barrido(Pbas)
    print('Mazo de oro')
    barrido(Poro)
    print('Mazo de copa')
    barrido(Pcop)
    Pesp = ordenar_pila(Pesp)
    print('Mazo de espada ordenados')
    barrido(Pesp)
def impares(P):
    '''Elimina numeros impares de una pila'''
    P2 = Pila()
    while not pila_vacia(P):
        x = desapilar(P)
        if x % 2 == 0:
            apilar(P2, x)
            invertir(P2)
    barrido(P2)
def factorial(num):
    '''Pila de factoriales de un numero dado'''
    P = Pila()
    for i in range(1, num + 1):
        apilar(P, i)
    print('')
    barrido(P)
    resultado = 1
    while not pila_vacia(P):
        resultado *= desapilar(P)
    return resultado
def reemplazo(P):
    '''Reemplaza un elemento repetido en una pila por otro dado'''
    P2 = Pila()
    reemplazar = 1999
    busc = 10
    while not pila_vacia(P):
        x = desapilar(P)
        if x == busc:
            x = reemplazar
            apilar(P2, x)
            invertir(P2)
        else:
            apilar(P2, x)
    barrido(P2)
def crecientes():
    '''Inserta elementos en una pila de manera creciente'''
    P = Pila()
    Paux = Pila()
    while not pila_llena(P):
        dato = random.randint(1, 50)
        print(str(dato) + ' agregado')
        if not pila_vacia(P):  # ingresa cuando hay al menos un elemento en P
            while not pila_vacia(P) and cima(P) >= dato:
                apilar(Paux, desapilar(P))
        apilar(P, dato)
        while not pila_vacia(Paux):
            apilar(P, desapilar(Paux))
    print('')
    barrido(P)
def piladeobjetos():
    '''Ordena una pila de objetos por su peso'''
    P = Pila()
    objetos = [
        'monitor', 'teclado', 'raton', 'carpeta', 'almohadilla',
        'sujetapapeles', 'abrochadora', 'cafetera'
    ]
    for i in range(0, len(objetos)):
        pes = random.randint(1, 20)
        apilar(P, [pes, objetos[i]])
    print('Pila de objetos(en kg.)')
    barrido(P)
    print('')
    P = ordenar_pila(P)
    print('Pila de objetos ordenados por peso:')
    barrido(P)
from TDA_Pila import Pila, apilar, desapilar, pilaint, pilastring, invertir
from TDA_Pila import pila_vacia, pila_llena, tamanio, ordenar_pila
from TDA_Pila import cima, barrido
import random

print('TP3 - PILA')
print('')

# Declaraciones para ejercicios
vec = [5, 3, 2, 1, 6, 9, 0, 8, 7, 4]

PN = Pila()
pilaint(PN)
print('Pila de numeros enteros')
barrido(PN)
print('')

PC = Pila()
pilastring(PC)
print('Pila de caracteres')
barrido(PC)
print('')


# EJ 1
def ocurrencias(P):
    '''Numero de ocurrencias de un determinado elemento en una pila'''
    c = 0
    busc = 10
    while not pila_vacia(P):
        x = desapilar(P)