Reto 18: Simular un editor con deshacer y rehacer
Objetivo #
Simular un editor con deshacer y rehacer aplicando los contenidos de Python básico.
Conocimientos previos #
Pilas con listas, append(), pop(), tuplas, bucles y condicionales.
Repasar los temas necesarios
Tu reto #
Implementa la función editar(acciones).
El editor empieza con texto vacío. Cada acción es una tupla: ("escribir", texto), ("deshacer", "") o ("rehacer", "").
Escribir añade el texto al final, guarda el estado anterior para poder deshacer e invalida todos los estados pendientes de rehacer. Deshacer restaura el estado anterior y guarda el actual para rehacerlo. Rehacer recupera el último estado deshecho y permite volver a deshacerlo.
Si no hay un estado para deshacer o rehacer, ignora esa acción. Los textos de escritura no están vacíos. Devuelve únicamente el texto final y no modifiques las acciones. Usa dos listas como pilas y variables locales, sin clases ni ficheros.
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 |
|---|---|
editar([("escribir", "A"), ("escribir", "B"), ("deshacer", ""), ("rehacer", "")]) | "AB" |
editar([("escribir", "A"), ("deshacer", ""), ("escribir", "X"), ("rehacer", "")]) | "X" |
Ver una pista
Guarda el texto completo antes de cada cambio en una pila. La otra pila contiene los estados que puedes rehacer. Una escritura nueva vacía esa segunda pila.