El código muerto se queda allí sin hacer nada, mirándonos sabiendo que nunca se ejecutará ... pero hoy podemos vengarnos.
Especificación
La entrada será una cadena multilínea.
Cada línea puede ser una asignación o una expresión .
Asignación
Una asignación es de la forma <name> = number
en que nombre es una secuencia de letras, guiones bajos y números, pero no comienza con un número.
Las variables se pueden asignar cualquier cantidad de veces.
Expresión
Una expresión es de la forma <var_name OR number> <operation> <var_name OR number> ...
Una expresión puede ser cualquier combinación de:
- Variables ya definidas
- Operadores aritméticos básicos
+-*/
- Números (enteros)
Rendimiento esperado
Debe generar la cadena con asignaciones redundantes , asignaciones que nunca son utilizadas por ninguna de las expresiones que le siguen, eliminadas. Tenga en cuenta que las asignaciones también pueden hacerse redundantes si se realiza una asignación adicional a la misma variable antes de que se ejecute una expresión usando la variable.
Casos de prueba
en
a = 10
a * 3
fuera
a = 10
a * 3
en
foo = 8
2 - 1
a = 18
fuera
2 - 1
en
a = 10
a = 8
b = 4
ab = 72
b / 6
b + 1
fuera
b = 4
b / 6
b + 1
en
a = 1
a = 2
a + 1
fuera
a = 2
a + 1
en
FooBar1 = 0
Fuz__ = 8
Fuz__ / 1
fuera
Fuz__ = 8
Fuz__ / 1
en
a = 1
a + 1
a = 2
a + 1
fuera
a = 1
a + 1
a = 2
a + 1
en
a = 1
1 / 5 * 8 + 4
fuera
1 / 5 * 8 + 4
en
a = 1
a + 1
a = 1
a + 1
fuera
a = 1
a + 1
a = 1
a + 1
en
a = 7
5 / a
fuera
a = 7
5 / a
a = 1; a + 1; a = 1; a + 1;
:? Donde el segundoa = 1
se puede descartar solo porquea
se estableció previamente en el mismo valor (1
).