2118. Build the Equation π
Description
Table: Terms
+-------------+------+ | Column Name | Type | +-------------+------+ | power | int | | factor | int | +-------------+------+ power is the column with unique values for this table. Each row of this table contains information about one term of the equation. power is an integer in the range [0, 100]. factor is an integer in the range [-100, 100] and cannot be zero.
You have a very powerful program that can solve any equation of one variable in the world. The equation passed to the program must be formatted as follows:
- The left-hand side (LHS) should contain all the terms.
- The right-hand side (RHS) should be zero.
- Each term of the LHS should follow the format
"<sign><fact>X^<pow>"where:<sign>is either"+"or"-".<fact>is the absolute value of thefactor.<pow>is the value of thepower.
- If the power is
1, do not add"^<pow>".- For example, if
power = 1andfactor = 3, the term will be"+3X".
- For example, if
- If the power is
0, add neither"X"nor"^<pow>".- For example, if
power = 0andfactor = -3, the term will be"-3".
- For example, if
- The powers in the LHS should be sorted in descending order.
Write a solution to build the equation.
The result format is in the following example.
Example 1:
Input: Terms table: +-------+--------+ | power | factor | +-------+--------+ | 2 | 1 | | 1 | -4 | | 0 | 2 | +-------+--------+ Output: +--------------+ | equation | +--------------+ | +1X^2-4X+2=0 | +--------------+
Example 2:
Input: Terms table: +-------+--------+ | power | factor | +-------+--------+ | 4 | -4 | | 2 | 1 | | 1 | -1 | +-------+--------+ Output: +-----------------+ | equation | +-----------------+ | -4X^4+1X^2-1X=0 | +-----------------+
Follow up: What will be changed in your solution if the power is not a primary key but each power should be unique in the answer?
Solutions
Solution 1
Thinking
The polynomial must be printed from highest power to lowest, with different text for the constant, linear, and higher terms, plus signs on positive coefficients. Building that in application code is easy to get wrong.
A \(\texttt{CASE}\) on \(\textit{power}\) formats each term: coefficient only for degree \(0\), coefficient and X for degree \(1\), otherwise X^ plus the exponent, with a leading + when the factor is positive.
\(\texttt{GROUP\_CONCAT}\) in descending power, then append =0, yields the equation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |