Определить тип треугольника - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь определить тип треугольника хакера ниже, где на основе 3 сторон должно быть определено, является ли треугольник равносторонним, равнобедренным, scaelene или не треугольником.

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

Я не уверен, почему приведенный ниже код не проходит тестовый пример.К сожалению, я не могу загрузить контрольный пример, чтобы понять, почему он не работает.

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

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Попробуйте что-то вроде этого:

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

Проверять тип треугольника только в том случае, если это треугольник.

0 голосов
/ 24 ноября 2018

Попробуйте:

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;

Условие для разностороннего треугольника не включает следующее условие в исходный запрос: Сторона 1 + Сторона 2 <= Сторона 3 </p>

...