Back to challenges
Easy 0 solved 0% acceptance

Triangle Classification

Classify three side lengths as invalid, equilateral, isosceles, or scalene.

What you'll learn

  • Check the triangle inequality
  • Classify by equal sides
  • Order conditions from most to least specific

Problem

Classify three side lengths as invalid, equilateral, isosceles, or scalene. A valid triangle has positive sides, and its two shortest sides must sum to more than its longest side. Equal-to is invalid: it forms a straight line. Use equilateral for three equal sides, isosceles for exactly two, and scalene for three different sides.

Implement triangle_classification(sides).

Input

sides: The three side lengths in any order.

Output

Return one lowercase label: invalid, equilateral, isosceles, or scalene.

Constraints

Exactly three integer sides, each between −1,000,000,000 and 1,000,000,000. Nonpositive sides are invalid.

Examples

Example 1
Input:
sides = [5, 5, 8]

Expected output:
expected = "isosceles"
Input:
std::vector<long long> sides = {5, 5, 8};

Expected output:
std::string expected = "isosceles";
Input:
long[] sides = new long[] {5, 5, 8};

Expected output:
string expected = "isosceles";

Explanation

Two sides equal 5, and 5 + 5 > 8, so this is a valid isosceles triangle.

Example 2
Input:
sides = [1, 2, 3]

Expected output:
expected = "invalid"
Input:
std::vector<long long> sides = {1, 2, 3};

Expected output:
std::string expected = "invalid";
Input:
long[] sides = new long[] {1, 2, 3};

Expected output:
string expected = "invalid";

Explanation

1 + 2 equals 3. The strict inequality fails, so these lengths form a line.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

First rule out impossible triangles: nonpositive sides or a longest side that is too long.

Hint 2

Sort the sides so the triangle inequality is easy to check.

Hint 3

Then classify by how many side lengths match: three, two, or none.

Expected complexity

O(1) time, O(1) extra space

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.