Der Umgang mit Gleichungen ohne einen guten Gleichungseditor ist chaotisch und unangenehm. Wenn ich zum Beispiel ein Integral und seine Lösung ausdrücken wollte, könnte es ungefähr so aussehen:
Integral [x ^ 3 e ^ (- mx ^ 2 b / 2), dx] = - ((2 + b m x ^ 2) / (b ^ 2 * e ^ ((b m x ^ 2) / 2) * m ^ 2))
Bei integrals.wolfram.com wird dies als "Eingabeformular" bezeichnet. Niemand mag es, eine Gleichung in "Eingabeform" zu sehen. Die ideale Art, diese Gleichung zu visualisieren, wäre:
(Wolfram nennt diese "traditionelle Form")
Schreiben Sie für diesen Codegolf ein Programm, das eine Gleichung in "Eingabeform" als Eingabe verwendet und diese Gleichung in einer ASCII-Darstellung der "traditionellen Form" visualisiert. Für dieses Beispiel könnten wir also so etwas bekommen:
/\ 3
| x
| ------------ dx =
| 2
\/ (m x b)/2
e
2
2 + b m x
-(-----------------)
2
2 (b m x )/2 2
b e m
Bedarf:
- Mischen, vereinfachen oder ordnen Sie die Eingabe in keiner Weise neu. Rendern Sie es in genau der Form, in der es von der Eingabe beschrieben wurde.
- Unterstützen Sie die vier grundlegenden mathematischen Operationen (+, -, *, /). Wenn zwei benachbarte Zahlen nicht multipliziert werden, ist das Symbol * impliziert und sollte weggelassen werden.
- Unterstützung für die Integration (wie im obigen Beispiel gezeigt) ist nicht erforderlich. Die Unterstützung von Eingaben mit Funktionen wie [...] Integrieren oder [...] Sqrt ist ein Bonus.
- Unterstützungskräfte wie im obigen Beispiel gezeigt (die n-te Wurzel kann durch Erhöhen auf die 1 / n-te Kraft modelliert werden).
- Redundante Klammern (wie die um den Denomentator und den Zähler des großen Bruchteils im obigen Beispiel) sollten weggelassen werden.
- Der Ausdruck im Nenner und Zähler eines Bruchs sollte über und unter der horizontalen Trennlinie zentriert sein.
- Sie können wählen, ob nach einem Gleichheitszeichen eine neue Zeile beginnen soll oder nicht. Im obigen Beispiel wird eine neue Zeile gestartet.
- Die Reihenfolge der Operationen muss in der Ausgabe genau dieselbe sein wie in der Eingabe.
Einige Beispiele für Eingaben und zugehörige Ausgaben zum Testen Ihrer Lösung:
Eingang:
1/2 + 1/3 + 1/4
Ausgabe:
1 1 1
- + - + -
2 3 4
Eingang:
3x^2 / 2 + x^3^3
Ausgabe:
2 3
3 x 3
---- + x
2
Eingang:
(2 / x) / (5 / 4^2)
Ausgabe:
2
-
x
--
5
--
2
4
Eingang:
(3x^2)^(1/2)
Ausgabe:
2 1/2
(3 x )