This is the problem:
https://www.hackerrank.com/challenges/what-type-of-triangle/problem
I’ve tried this solution:
x
SELECT
CASE
WHEN (A+B) <= C OR (B+C) <= A OR (C+A) <= B THEN 'Not A Triangle'
WHEN A = C OR A = B OR B = C THEN 'Isoceles'
WHEN A = C AND A = B THEN 'Equilateral'
ELSE 'Scalene'
END
FROM TRIANGLES;
The above solution does not work.
Whereas the solution given below works
SELECT
CASE
WHEN A >= (B + C) OR B >= (A + C) OR C >= (A + B) THEN 'Not A Triangle'
WHEN A = B AND A = C THEN 'Equilateral'
WHEN A = B OR B = C OR A = C THEN 'Isosceles'
ELSE 'Scalene'
END
FROM TRIANGLES;
I feel both solutions are the same except swapping the side of the operands while I also appropriately changed the operator so as to not change the meaning. Can someone please explain why solution 1 doesn’t work?
Advertisement
Answer
select
case
when A + B <= C or C + A <= B or C + B <= A then 'Not A Triangle'
when A = B and B = C then 'Equilateral'
when A <> B and B <> C and A <> C then 'Scalene'
when (A = B and C <> A) or (A = C and B <> A) or (B = C and A <> C) then 'Isosceles' END
from Triangles;
- Simple Case for each situation
- The order here is important for accurate results
- Important: <= condition is not clearly shown in Hacker rank question for ‘Not a Triangle’, This may be your issue