Примените неопределенный интеграл к данной строке. Единственные правила, которые вы будете использовать, определены так:
^cx ^ (n) dx = (c / (n + 1)) x ^ (n + 1) + C, n ≠ -1 c, C и n - все постоянные.
Характеристики:
- Вы должны иметь возможность интегрировать полиномы с любой из возможных функций:
- Коэффициент, возможно, доля в формате
(numerator/denominator)
. - Признание того, что e и π являются константами, и при их использовании возможность образовывать дроби или выражения, содержащие их (может содержаться в дробях, подобных
(e/denominator)
или(numerator/e)
, или, если в показателях,x^(e+1)
)- Помимо этих двух специальных констант, все коэффициенты будут рациональными, действительными числами.
- Показатель степени, возможно, дроби, в формате
x^(exponent)
- Выражения с
e
илиπ
в них, вне их самих, не будут в показателях степени. (вам не нужно интегрировать такие вещи, какx^(e+1)
, но вы можете интегрироватьx^(e)
)
- Выражения с
- Может использовать переменные не-1-символьные (т.е.
f
)- Это только для ASCII диапазонов 65-90 и 97-122.
- Вам не нужно использовать правило цепочки или интегрировать
x^(-1)
.
- Коэффициент, возможно, доля в формате
- Выход должен иметь отступы (разделение между терминами, то есть
x^2 + x + C
. - Если неизвестно, как интегрировать вышеуказанные функции, программу следует распечатать
"Cannot integrate "+input
. - Это должна быть полная программа.
Бонусы:
- -10%, если вы распечатываете «красивые» показатели, отформатированные для уценки (вместо
x^2
,x<sup>2</sup>
). - -10%, если вы распечатываете уравнение (то есть
∫xdx = (1/2)x^2 + C
)
Примеры:
Входные данные:
x
Выход:
(1/2)x^(2) + C
Входные данные:
-f^(-2)
Выход:
f^(-1) + C
Входные данные:
(1/7)x^(1/7) + 5
Выход:
(1/56)x^(8/7) + 5x + C
Входные данные:
πx^e
Выход:
(π/(e+1))x^(e+1) + C
Входные данные:
(f+1)^(-1)
Выход:
Cannot integrate (f+1)^(-1)
e
иπ
, единственными значениями в коэффициентах будут рациональные числа? Т.е. не нужно обрабатывать многозначные полиномы? 2. Когда вы говорите « переменные не x 1-char », вы ограничиваетеa-zA-Z
или намереваетесь включить другие диапазоны Unicode?ln(x) + C
для вводаx^(-1)
?x^(e+1)
это не будет интегрантом, но это может быть результатом интеграции. 2) Не будет нескольких буквенных переменных. 3) Да. 4) Да, но так и должно быть(1/56)x^(1/7+1) + C
(я ошибся в примерах).Ответы:
Mathematica 478 * 0,9 = 430,2
Это создает истинную функцию φ, которая принимает одну строку в качестве входа. (Это считается полной программой для Mathematica?)
Безгольфовая версия будет:
Обратите внимание, что греческие буквы необходимы, чтобы иметь возможность использовать все остальные буквы во входных данных.
источник
MATLAB, 646 x 0,9 = 581,4 байта
В настоящее время эта работа ведется с использованием MATLAB, встроенных в возможности символической интеграции. В настоящее время требования были обновлены, поэтому формат теперь соответствует требованиям. Это также дает право на второй бонус -10%.
Если кто-то хочет внести свой вклад и предложить способы исправления вывода или использовать этот код в качестве основы для другого ответа, не стесняйтесь :). Если я смогу найти время, я продолжу играть с ним и посмотрю, смогу ли я подумать, как переформатировать вывод.
Обновление: Хорошо, так что после некоторой дополнительной работы, вот как код в настоящее время стоит. Это все еще в стадии разработки, но сейчас все ближе к соответствию требуемого результата.
Вот несколько примеров того, что он в настоящее время производит. Как видите, это не совсем правильно, но все ближе.
Входы:
Выходы:
источник
x^(8/7)/8
что, хотя математически правильно, не в той форме, которую вы хотите -(1/8)x^(8/7)
.