Diving into Scala's Parsing Combinators
Given an algebraic expression, reduce the expression to a simplified form meeting the following criteria:
-
All terms are in descending order of the power of variable
x
. -
Coefficients should be concatenated immediately to the left of your variable (e.g.:
5 * x
should be printed as5x
). -
There are exactly 3 characters between any 2 consecutive terms of the expression: a space, followed by a
+
or-
sign, followed by another space. -
In case there is no operator between expressions, assume that it implies multiplication. e.g.
(5x+2)(x+2)
should be treated as(5x+2)*(x+2)
,5(x+1)
should be treated as5*(x+1)
. -
The simplified expression must not contain any parentheses.
-
1-coefficients and 1-powers are implied; if the coefficient or power of a certain
x
term is 1, do not output 1 (e.g.:1x
or1 * x
simplifies tox
, andx^1
simplifies tox
). -
Do not print the powers of
x
having a coefficient of 0 (e.g.: output5x^2 - 3
, not5x^2 + 0x - 3
).
The original challenge comes from HackerRank