在没有好的方程编辑器的情况下处理方程是混乱且令人不愉快的。例如,如果我想表达一个积分及其解决方案,它可能看起来像这样:
积分[x ^ 3 e ^(-mx ^ 2 b / 2),dx] =-((2 + b m x ^ 2)/(b ^ 2 * e ^((b m x ^ 2)/ 2) * m ^ 2))
在积分.wolfram.com上,这称为“输入形式”。没有人喜欢看到“输入形式”的方程式。可视化此方程式的理想方式是:
(Wolfram称之为“传统形式”)
对于此代码高尔夫球,编写一个程序,该程序将采用“输入形式”的某些方程作为输入,并以“传统形式”的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个根可以通过提高到第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 )
您的问题通常应带有一个标签,以表明它是哪种竞赛。我可以随意添加一个,因为您在文本中说了“ codegolf”。
—
dmckee ---前主持人小猫,
这个问题太模糊了,无法解决。您不必说必须支持哪些构造,或者它们必须是什么样。仅支持+,-,*和/就足够了吗?是否需要支持Sigma?那希腊字母呢?您提出的问题的可能解决方案可能在功能上差异太大,无法与代码长度进行比较。
—
MtnViewMark
@MtnViewMark,我添加了一些“要求” ...让我知道高尔夫现在是否更好。
—
阿米
@Ami-是的,很多。
—
MtnViewMark
我同意MtnViewMark,这似乎很开放且含糊。出于高尔夫球的目的,也许最好将输入和输出限制为一组定义明确的测试用例。您是否完成了参考实施?
—
gnibbler 2011年