Przenosisz się do równoległego wszechświata, w którym ludzie ręcznie piszą matematyczne równania na komputerach jako sztukę ASCII. Jako uzależniony od LaTeXa jest to całkowicie niedopuszczalne i należy nieco zautomatyzować ten proces.
Twoim celem jest napisanie programu, który wypisze wersję równania ASCII wprowadzoną jako polecenie matematyczne LaTeX.
Obowiązkowe polecenia LaTeX do obsługi
Suma: komenda LaTeX dla sumy to
\sum_{lower bound}^{upper bound}
Liczba ASCII, której musisz użyć do sum, to:
upper bound ___ \ ` /__, lower bound
Produkt: komenda LaTeX dla produktu to
\prod_{lower bound}^{upper bound}
Liczba ASCII, którą musisz zastosować do produktów, to:
upper bound ____ | | | | lower bound
Frakcja: komenda LaTeX dla ułamków to
\frac{numerator}{denominator}
Liczba ASCII, której musisz użyć dla ułamków, to:
numerator ----------- denominator
Wszystko, co nie jest jednym z tych trzech poleceń, jest wyświetlane w obecnej postaci. Na przykład \sum{i=3}^{e^10}\frac{3x+5}{2}
powinien być wyświetlany jako
e^10
___ 3x+5
\ ` ----
/__, 2
i=3
Wejścia
Dane wejściowe to polecenie LaTeX przekazane jako ciąg (lub odpowiednik napisów w Twoim języku). Polecenia LaTeX mogą być zagnieżdżone, na przykład \frac{\frac{1}{2}}{3}
jest to poprawne wejście. Dane wejściowe powinny być zawsze poprawne (nie trzeba sprawdzać składni LaTeX-a w kodzie). Dane wejściowe będą składały się tylko z trzech poleceń LaTeX przedstawionych powyżej i „tekstu”, którego nie będzie trzeba formatować.
Polecenia LaTeX zawsze będą miały składnię przedstawioną powyżej, tzn. Sumy i produkty zawsze będą miały górne i dolne granice (chociaż mogą być puste) i zawsze będzie licznik i mianownik dla ułamków.
Zakładamy, że granice sum i produktów mają co najwyżej 4 znaki (= szerokość symboli sumy i produktów), więc nie musisz się martwić o możliwe problemy nakładania się. Z podobnych powodów zakładamy, że granice są po prostu „tekstem” i nigdy nie będą poleceniami LaTeX, np. \sum_{\sum_{1}^{2}}^{1}
Nie są poprawnym wejściem.
Wyjścia
Wyjście twojego programu jest reprezentacją ASCII komendy LaTeX podanej jako dane wejściowe.
Twój program musi uwzględniać wyrównanie w poziomie: na przykład granice sumy lub produktu muszą być wyrównane w poziomie z sumą lub symbolem produktu (które mają szerokość 4 znaków). Jeśli granica ma nieparzystą liczbę znaków, nie ma znaczenia, czy jest to jeden znak z prawej, czy z lewej strony środka, w zależności od tego, co jest w porządku. Linia ułamka musi być tak długa jak licznik lub mianownik, w zależności od tego, który jest najdłuższy.
Twój program musi uwzględniać wyrównanie pionowe: na przykład \frac{\frac{1}{2}}{3} = \frac{1}{6}
powinien być wyświetlany jako
1
-
2 1
- = -
3 6
W przypadku sum i produktów, ponieważ symbole mają 4 znaki wysokości, przyjmuje się, że pionowy środek jest drugą linią od góry.
Zakłada się, że odstępy poziome są prawidłowe na danym wejściu, tzn. Odstępy na wejściu powinny być wyświetlane na wyjściu.
Przypadki testowe
Wkład
abc = 2
Wydajność
abc = 2
Wkład
e = \sum_{n=0}^{+inf} \frac{1}{n!}
Wydajność
+inf ___ 1 e = \ ` -- /__, n! n=0
Wkład
e^x = 1 + \frac{x}{1 - \frac{x}{2 + x - ...}}
Wydajność
x e^x = 1 + --------------- x 1 - ----------- 2 + x - ...
Wkład
\prod_{i=1}^{n} \frac{\sum_{j=0}^{m} 2j}{i + 1}
Wydajność
m ___ \ ` 2j n /__, ____ j=0 | | ------- | | i + 1 i=1
Wkład
\frac{sum}{prod} = \sum_{frac}^{prod} sum
Wydajność
prod sum ___ ---- = \ ` sum prod /__, frac
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod.