Работа с уравнениями в отсутствие хорошего редактора уравнений - это грязно и неприятно. Например, если бы я хотел выразить интеграл и его решение, он мог бы выглядеть примерно так:
Интеграл [x ^ 3 e ^ (- mx ^ 2 b / 2), dx] = - ((2 + b m x ^ 2) / (b ^ 2 * e ^ ((b m x ^ 2) / 2) * м ^ 2))
На сайте integras.wolfram.com это называется «формой ввода». Никто не любит видеть уравнение в «форме ввода». Идеальный способ визуализации этого уравнения:
(Вольфрам называет это «традиционной формой»)
Для этого Codegolf напишите программу, которая будет принимать какое-то уравнение в «форме ввода» в качестве входных данных и визуализировать это уравнение в представлении ascii «традиционной формы». Итак, для этого примера мы можем получить что-то вроде этого:
/\ 3
| x
| ------------ dx =
| 2
\/ (m x b)/2
e
2
2 + b m x
-(-----------------)
2
2 (b m x )/2 2
b e m
Требования:
- Не перемешивайте, не упрощайте и не переставляйте входные данные любым способом. Визуализируйте его в той же форме, в которой оно было описано входными данными.
- Поддержка четырех основных математических операций (+, -, *, /). Если не умножить два соседних числа, подразумевается символ * и его следует опускать.
- Поддержка интеграции (как показано в примере выше) не требуется. Возможность поддержки ввода с помощью таких функций, как Integrate [...] или Sqrt [...], является бонусом.
- Поддерживайте силы, как показано в примере выше (n-й корень может быть смоделирован путем повышения до 1 / n-й степени).
- Избыточные круглые скобки (например, те, которые находятся вокруг деноменатора и числителя большой дроби в приведенном выше примере) должны быть опущены.
- Выражение в знаменателе и числителе дроби должно быть в центре выше и ниже горизонтальной линии деления.
- Вы можете выбрать, стоит ли начинать новую строку после знака равенства. В приведенном выше примере новая строка запускается.
- Порядок операций должен быть точно таким же на выходе, как и на входе.
Некоторые примеры ввода и связанного вывода для тестирования вашего решения:
Входные данные:
1/2 + 1/3 + 1/4
Вывод:
1 1 1
- + - + -
2 3 4
Входные данные:
3x^2 / 2 + x^3^3
Вывод:
2 3
3 x 3
---- + x
2
Входные данные:
(2 / x) / (5 / 4^2)
Вывод:
2
-
x
--
5
--
2
4
Входные данные:
(3x^2)^(1/2)
Вывод:
2 1/2
(3 x )