这个挑战,但具有更好的规格。
规格
您的程序将采用包含单个变量的线性方程式,x
并输出的值x
。
输入/解析
- 输入将仅包含数字,运算符,括号(
()
)x
,和一个=
符号(这意味着没有空格)。 - 括号将始终保持平衡。
- 总会有至少1个
x
。一个x
可以通过许多之前。 - 所有方程式都会精确地得到一个结果。
甲数可以通过以下步骤来定义。可以用正则表达式定义一个数字:-?(\d+(\.\d+)?|\.\d+)
。
如果您不讲正则表达式:将数字定义为 0-9
- 它可能
-
在开始时有一个表示否定 - 然后可能会有一些数字。如果没有任何数字,将有一个小数点
- 如果存在小数点,则至少要跟一位数字
最大的数字/值将取决于您的语言能力。
一个运营商是任何的:+-*/
,他们将永远数字之间出现,或括号
(5)(5)
为了简单起见,这意味着不是有效的输入。
括号内始终始终包含有效的表达式(数字和/或运算符的有效组合)。“平衡”括号的定义是,每个括号(
都会有一个关联的结尾)
评价
- 应该遵循操作顺序,并且优先级从高到低依次为:
- 括号(最深嵌套)
- 乘法与除法
- 加减法
- 如果出现两个具有相同优先级的运算符,则您应该选择向左->向右移动
输出量
您应该以某种方式输出结果。如果您不只是输出数字结果,请在答案中阐明输出的输出方式。您的输出格式应该一致。输出可能是十进制,但始终是有理数,精度受限于您语言的精度。仅当您的语言不支持浮点算术时,才不需要支持它。
规则
- 允许琐碎处理此任务的内置函数,但是您必须清楚
[uses built-in]
地在答案的标题中添加清楚。这使您的答案免于获胜 - “使该任务变得琐碎的内置程序”是以下任何一种:
- 吸收方程式并输出a /变量值的东西
- 可以完全简化方程式的东西
- 使用
eval
或相关功能进行大量解析。eval
如果函数和相关函数用于(只需对输入进行最少的修改)求解线性方程,则不允许使用和相关函数。 - 如有疑问,请在评论中提问。
- 允许解析方程式的内置程序
例子
3+4=x
7
4+x=5
1
3+3*3=x
12
3x-4=7+2x
11
3--1=x
4
3*(2+4x)=7x-4
-2
1.2+2.3x=5.8
2
10=4x
2.5
输入无效:
(5)(4)=x no operator between (5) and (4)
5(x+3)=2 no operator 5 and (...)
x=y the only variable is x
4=3 there is no x
x+3=x-7 no solution
x=x infinite solutions
+5=x + is not an unary operator. -5=x would be valid though
1/(x-3)=5 Nonlinear
3/x Nonlinear
eval
算是平凡的挑战?还有,new Function(...)
计数形式吗?