from random import randint
from turtle import *

#P1---------------------------------------------------------------------

class Persona:
    #constructor, string y int
    def __init__(self,n,e):
        self.nombre = n
        self.edad = e

    #string: entrega el string de una persona
    def string(self):
        return str(self.nombre) + " - " + str(self.edad)

class Cola:
    #constructor
    def __init__(self):
        self.lista = []

    #push: persona, ingresa a una persona
    def push(self,x):
        self.lista =  [x] + self.lista

    #pop: retira a una persona a la cola
    def pop(self):
        return self.lista.pop()

    #isEmpty: entrega un booleano sobre si la cola esta vacia o no.
    def isEmpty(self):
        if self.lista == []:
            return True
        else:
            return False

class Banco:
    #constructor
    def __init__(self):
        self.abuelitos = Cola()
        self.comunes = Cola()
    #encolar persona: agrega a una persona de acuerdo a su edad
    def encolar_persona(self,persona):
        if persona.edad >= 60:
            self.abuelitos.push(persona)
        else:
            self.comunes.push(persona)
    #atender persona: atiende a una persona de acuerdo a su edad
    def atender_persona(self):
        if not self.abuelitos.isEmpty():
            return self.abuelitos.pop()
        
        elif not self.comunes.isEmpty():
            return self.comunes.pop()
        else:
            return None
    #estaVacio: dice si un banco tiene gente o no.
    def estaVacio(self):
        return self.abuelitos.isEmpty() and self.comunes.isEmpty() 



#No me maten no se todas las edades je
nombres= ["pinguino","gato","delfin","aguila","profe<3","santa","obama"]
edades= [20,22,24,20,30,300,75]

banquito = Banco()

while True:
    num = randint(1,10)
    if num <= 6 and nombres != []:
        #generamos una persona
        azar = randint(0,len(nombres)-1)
        persona = Persona(nombres.pop(azar),edades.pop(azar))
        print(persona.string() + "ingresa al banco")
        banquito.encolar_persona(persona)
        
    else:
        #atendemos a una persona
        if not banquito.estaVacio():
            persona = banquito.atender_persona()
            print(persona.string() + "fue atendida, adios!")
        
        else:
            print("rayos, no hay nadie en la cola (aunque intentamos atender a alguien ewe)")

    if nombres == [] and banquito.estaVacio():
        break


print("acabamos el dia, todas las personas fueron atendidas")


#P2---------------------------------------------------------------------

#intento malito, jejeje, pero si quieren usarlo, rianse
def cubo_recursivomalo1(largo=400, n=10, i = 7/10):
    setx(-largo/2)
    sety(-largo/2)
    pendown()
    largo = largo
    while n > 0:
        forward(largo)
        left(90)
        forward(largo)
        left(90)
        forward(largo)
        left(90)
        largo = largo * i
        forward(largo)
        n -=1

#cubo recursivo
#hace un cubo recursivo
#literalmente, es solo un cubo recursivo, no se puede testear.
def cubo_recursivo(largo=400, n=50, i = 0.9):
    penup()
    goto(-largo/2,-largo/2)
    pendown()
    forward(largo)
    left(90)
    forward(largo)
    left(90)
    while n > 0:
        forward(largo)
        left(90)
        largo = largo * i
        forward(largo)
        left(90)
        n -=1

cubo_recursivo()






        
