Reto 17: Organizar una impresora por rondas
Objetivo #
Organizar una impresora por rondas aplicando los contenidos de Python básico.
Conocimientos previos #
Tuplas, deque, popleft(), append(), while y condiciones.
Tu reto #
Implementa la función orden_impresion(trabajos).
Cada trabajo es una tupla (identificador, paginas) con identificador único y un número positivo de páginas. Simula una impresora que atiende una página del primer trabajo de la cola en cada turno.
Si al trabajo le quedan páginas, vuelve al final de la cola con una página menos. Si termina, añade su identificador al resultado. Devuelve la lista de identificadores en su orden de finalización. No reordenes los trabajos al inicio ni modifiques la lista original. La entrada vacía devuelve [].
Puedes importar deque de collections, como en el tema de colas de Python básico.
La función debe devolver el resultado con return. No uses input() ni print(): el corrector llamará a tu función con diferentes datos.
Ejemplos #
| Llamada | Resultado devuelto |
|---|---|
orden_impresion([("A", 2), ("B", 1), ("C", 2)]) | ["B", "A", "C"] |
orden_impresion([("Solo", 3)]) | ["Solo"] |
Ver una pista
La cola guarda el estado pendiente. Después de retirar un trabajo, descuenta una página y decide si ha terminado o debe volver al final.