rds80
rds80

Reputation: 629

Determine type of triangle

I'm trying the hacker rank type of triangle below where based on the 3 sides it has to be determined if the triangle is equilateral, isosceles, scaelene, or not a triangle.

https://www.hackerrank.com/challenges/what-type-of-triangle/problem

I'm not sure why the code below isn't passing the test case. Unfortunately, I can't download the test case to see why it isn't working.

SELECT CASE WHEN A = B AND B = C AND A = C THEN 'Equilateral' 
            WHEN (A = B AND B != C AND A != C)  OR (B = C AND A != B AND A != C)  OR (A = C AND A != B AND B != C) THEN 'Isosceles' 
            WHEN ((A + B) < C) OR ((B + C) < A) OR ((C + A) < B) THEN 'Not a triangle' 
            ELSE 'Scalene'  END 
FROM Triangles

Upvotes: 0

Views: 679

Answers (2)

Tina Sebastian
Tina Sebastian

Reputation: 34

Try this :

SELECT CASE WHEN A + B > C AND A+C>B AND B+C>A THEN 
   CASE WHEN A = B AND B = C THEN 'Equilateral' 
        WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
        WHEN A != B OR B != C OR A != C THEN 'Scalene' 
   END 
   ELSE 'Not A Triangle' END FROM TRIANGLES;

The condition for scalene triangle does not include the following condition in your original query : Side 1 + Side 2 <= Side 3

Upvotes: 2

Jonathan Van Dam
Jonathan Van Dam

Reputation: 648

Try something like this:

SELECT 
    CASE 
        WHEN A + B > C AND A + C > B AND B + C > A THEN 
            CASE 
                WHEN A = B AND B = C THEN 'Equilateral' 
                WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
                ELSE 'Scalene' END 
        ELSE 'Not A Triangle' END 
    FROM TRIANGLES

Only test for the type of triangle when it is a triangle.

Upvotes: 3

Related Questions