# Ejercicio 13 - RETO: supermercado con dos cajas (colas) y canastas (pila) from collections import deque print("Estudiante: ESCRIBE AQUÍ TU NOMBRE") canastas = ["C1", "C2", "C3", "C4"] # pila: el tope es la última cajas = {"Caja 1": deque(), "Caja 2": deque()} def llega(cliente): if not canastas: print(f"{cliente} espera: no hay canastas") return canasta = canastas.pop() # toma la canasta de encima caja = min(cajas, key=lambda k: len(cajas[k])) # la fila más corta cajas[caja].append((cliente, canasta)) print(f"{cliente} toma {canasta} y hace fila en {caja}") def atiende(caja): if not cajas[caja]: print(f"{caja} sin clientes") return cliente, canasta = cajas[caja].popleft() canastas.append(canasta) # la canasta vuelve a la pila print(f"{caja} atiende a {cliente} y devuelve {canasta}") for nombre in ["Ana", "Beto", "Caro", "Dani", "Eli"]: llega(nombre) atiende("Caja 1") llega("Eli") atiende("Caja 2") atiende("Caja 2") atiende("Caja 2") print("Canastas disponibles:", canastas) for caja, fila in cajas.items(): print(caja, "->", [cliente for cliente, _ in fila]) # RETO: agrega una tercera caja y un cliente "con prioridad" que pase al frente.