挑战
您是名为Coyote Beta的出色服务的所有者,该服务神奇地回答了用户通过互联网发送给它的数学问题。
但事实证明,带宽很昂贵。您有两种选择,要么创建“ 土狼Beta Pro”,要么找到解决该问题的方法。就在最近,有人在询问(x + 2)
。客户端无法发送x+2
,用户将看不到差异吗?
任务
您的任务是“最小化”数学表达式。给定一个输入表达式,您必须除去空格和括号,直到它给出相同输入的最小表示。关联运算的括号不需要保留。
这里给出的唯一运营商+
,-
,*
,/
,和^
(幂),与标准的数学关联性和优先级。输入中给出的唯一空白将是实际的空格字符。
样本输入/输出
Input | Output
------------|--------------
(2+x) + 3 | 2+x+3
((4+5))*x | (4+5)*x
z^(x+42) | z^(x+42)
x - ((y)+2) | x-(y+2)
(z - y) - x | z-y-x
x^(y^2) | x^y^2
x^2 / z | x^2/z
- (x + 5)+3 | -(x+5)+3
计分
输入/输出可以使用任何首选方法。以字节为单位的最小程序获胜。
确切的位
求幂是正确的关联,也遵循标准的数学优先级(最高)。有效数字文字为/[0-9]+/
,有效变量文字为/[a-z]+/
。即使变量的字符长度大于1,单个变量文字也代表一个值。
“不需要保留关联操作的括号”的意思是,输出应包含一个导致相同解析树的表达式,但可以重新安排关联操作。
这个想法是创建一个最小的等效语句,以产生相同的解析树。这样,当用户进行查询时,土狼Beta可以直观地显示它。
—
TND
如果有效变量为
—
Joe Z.
/[a-z]+/
,则表示ab
不允许通过并列相乘?
您确实想
—
feersum
2+(3+4)
更改为2+3+4
,对吗?这确实会更改分析树。
我对下列主张表示
—
Conor O'Brien 2015年
x^(y/2)=x^y/2
质疑; 幂运算具有较高的优先级ergo x^y/2=(x^y)/2
。
噢,我要用
—
DankMemes,2015年
Prompt X:expr(X)
TI-BASIC 提交,但您无法简化:(