Usted es transportado en un universo paralelo donde las personas escriben ecuaciones matemáticas en computadoras como arte ASCII a mano. Como adicto a LaTeX, esto es totalmente inaceptable, y debería automatizar este proceso de alguna manera.
Su objetivo es escribir un programa que genere una versión ASCII de una ecuación incorporada como un comando matemático LaTeX.
Comandos obligatorios de LaTeX para admitir
Suma: el comando LaTeX para una suma es
\sum_{lower bound}^{upper bound}
La cifra ASCII que debe usar para sumas es:
upper bound ___ \ ` /__, lower bound
Producto: el comando LaTeX para un producto es
\prod_{lower bound}^{upper bound}
La cifra ASCII que debe usar para los productos es:
upper bound ____ | | | | lower bound
Fracción: el comando LaTeX para fracciones es
\frac{numerator}{denominator}
La cifra ASCII que debes usar para las fracciones es:
numerator ----------- denominator
Todo lo que no sea uno de esos tres comandos se muestra tal cual. Por ejemplo, \sum{i=3}^{e^10}\frac{3x+5}{2}
debe mostrarse como
e^10
___ 3x+5
\ ` ----
/__, 2
i=3
Entradas
La entrada es un comando LaTeX pasado como una cadena (o el equivalente de su idioma a las cadenas). Los comandos LaTeX se pueden anidar, por ejemplo, \frac{\frac{1}{2}}{3}
es una entrada válida. Se supone que las entradas siempre son correctas (no es necesario verificar la sintaxis de LaTeX en su código). Las entradas solo consistirán en los tres comandos LaTeX presentados anteriormente y el 'texto' que no necesitará formatear.
Los comandos LaTeX siempre vendrán con la sintaxis presentada anteriormente, es decir, las sumas y los productos siempre tendrán límites superior e inferior (aunque pueden estar vacíos) y siempre habrá un numerador y un denominador para las fracciones.
Suponemos que los límites de las sumas y los productos tienen una longitud máxima de 4 caracteres (= el ancho de los símbolos de suma y producto), por lo que no tiene que preocuparse por posibles problemas de superposición. Por razones similares, asumimos que los límites son solo 'texto' y nunca serán comandos LaTeX, por ejemplo, \sum_{\sum_{1}^{2}}^{1}
no es una entrada válida.
Salidas
La salida de su programa es la representación ASCII del comando LaTeX que recibió como entrada.
Su programa debe tener en cuenta la alineación horizontal: por ejemplo, los límites de la suma o el producto deben estar alineados horizontalmente con la suma o el símbolo del producto (que tienen 4 caracteres de ancho). Si el límite tiene un número impar de caracteres, no importa si está un carácter a la derecha o a la izquierda del centro, lo que esté bien. La línea de la fracción debe ser tan larga como el numerador o el denominador, el que sea más largo.
Su programa debe tener en cuenta la alineación vertical: por ejemplo, \frac{\frac{1}{2}}{3} = \frac{1}{6}
debe mostrarse como
1
-
2 1
- = -
3 6
Para sumas y productos, dado que los símbolos tienen 4 caracteres de alto, se supone que el centro vertical es la segunda línea desde la parte superior.
Se supone que el espaciado horizontal es correcto en la entrada dada, es decir, los espacios en la entrada deben mostrarse en la salida.
Casos de prueba
Entrada
abc = 2
Salida
abc = 2
Entrada
e = \sum_{n=0}^{+inf} \frac{1}{n!}
Salida
+inf ___ 1 e = \ ` -- /__, n! n=0
Entrada
e^x = 1 + \frac{x}{1 - \frac{x}{2 + x - ...}}
Salida
x e^x = 1 + --------------- x 1 - ----------- 2 + x - ...
Entrada
\prod_{i=1}^{n} \frac{\sum_{j=0}^{m} 2j}{i + 1}
Salida
m ___ \ ` 2j n /__, ____ j=0 | | ------- | | i + 1 i=1
Entrada
\frac{sum}{prod} = \sum_{frac}^{prod} sum
Salida
prod sum ___ ---- = \ ` sum prod /__, frac
Tanteo
Este es el código de golf , por lo que gana el código más corto.