Skip to content

Latest commit

 

History

History
86 lines (74 loc) · 2.23 KB

File metadata and controls

86 lines (74 loc) · 2.23 KB

2118 - Build the Equation

Description

Table: Terms

+-------------+------+
| Column Name | Type |
+-------------+------+
| power       | int  |
| factor      | int  |
+-------------+------+
power is the primary key column 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 "X^" where:
is either "+" or "-".
is the absolute value of the factor.
is the value of the power.
If the power is 1, do not add "^".
For example, if power = 1 and factor = 3, the term will be "+3X".

If the power is 0, add neither "X" nor "^".
For example, if power = 0 and factor = -3, the term will be "-3". The powers in the LHS should be sorted in descending order.

Write an SQL query to build the equation.
The query 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

with cte1 as (
select *,if(factor>0, concat('+',factor), factor) as fws from Terms),
cte2 as (select *, case when power = 1 then concat(fws,'X')
when power = 0 then fws else concat(fws,'X^',power) end as eq from cte1)
select concat(group_concat(eq order by power desc separator ''),'=0') as eq from cte2;