package ch.usi.sqt;

public class TriangleClassifier {

    /**
     * This method takes as input three integers that represent the three sides
     * of a potential triangle. It returns 1 if the triangle is equilateral, 2 if
     * it is isosceles, 3 if it is scalene, or 4 if it is not a triangle.
     * @param a must be greater than zero
     * @param b must be positive
     * @param c cannot be less than or equal to zero
     * @throws IllegalArgumentException if a<=0, or b is less than 1, or c is zero or less than zero
     * @return a value greater than zero
     */
    public static int classify(int a, int b, int c) {
        if (a <= 0 || b <= 0 || c < 0) {
            throw new IllegalArgumentException("All sides must be greater than zero");
        }

        if (a == b && b == c) {
            return 1; // Equilateral
        }

        int max = Math.max(a, Math.max(b, c));

        if ((max == a && max - b - c >= 0) ||
                (max == b && max - a - c >= 0) ||
                (max == c && max - a - b >= 0)) {
            return 4; // Not a triangle
        }

        if (a == b || b == c || a == c) {
            return 2; // Isosceles
        } else {
            return 3; // Scalene
        }
    }
}