The 2007 ACM Northeast North America Programming Contest
3899 - Memory Lane
VEREDA DE MEMORIA
Antón T. Schrecklich, el arquitecto de software principal en Software-Als-Produkt, acaba de encontrar por casualidad un papel1 bastante seminal. En los discos de velocidad que usted usa en su teléfono rotatorio para pedir pone en práctica un instrumento que revolucionará el programa como él lo ve: El Programa-Diagramm Formulare - un ejemplo esta en la siguiente página.
Una acción simple es representada como una caja:
+--------+
| action |
+--------+
Un lazo es representado como una caja con una condición en lo alto y las partes de cuerpo anidadas en la caja:
+------------+
| condition |
| +----------+
| | .. |
+-+----------+
Finalmente, una decisión es representada con la condición en lo alto y los resultados anidados:
+--------------+
| condition |
| true | false |
+------+-------+
| .. | .. |
+------+-------+
Schrecklich es una persona quisquillosa para el detalle:
Input
La entrada describe un diagrama y consiste en una o varias líneas con una o varias palabras, separadas por el espacio blanco. Una palabra es cualquier secuencia de carácteres de color especiales. Las palabras además, el final, fi, si, y mientras son reservados para expresar lazos y decisiones, que pueden ser anidadas:
while condition stmts end
if condition stmts fi
if condition stmts else stmts fi
donde la condición es una palabra sola y stmts es una secuencia de acciones, lazos, y decisiones. Cada otra palabra sola es una acción separada. Por ejemplo :2
while x!=y
if x>y
x-=y
trace
else
if x<y y-=x trace fi
fi
end
Output
Su programa debe imprimir el diagrama llenado por espacio que contiene las palabras no reservadas de la entrada en las estructuras respectivas. Por ejemplo
+-------------------------+
| x!=y |
| +-----------------------+
| | x>y |
| | true | false |
| +-------+---------------+
| | | x<y |
| | x-=y | true | false |
| | +-------+ ------+
| +-------+ y-=x | |
| | trace +-------+ |
| | | trace | |
+-+-------+-------+-------+
1) 1 Nassi, I.; Shneiderman, B.: Flowchart techniques for structured programming, SIGPLAN Notices XII, August 1973.
2) My First Algorithm, in Στοιχεῖα, Proceedings of the Greek Academy of Sciences, about 300 BC.
Traducido por: CASTAÑEDA GALLARDO CARLOS EDUARDO