Sha256: df2273eb107f86b631c32f38bb1cce1cded38f785e7295e7167a21db24a83eaf

Contents?: true

Size: 1.3 KB

Versions: 132

Compression:

Stored size: 1.3 KB

Contents

import java.util.HashSet;
import java.util.Set;

class Triangle {

    private double side1;
    private double side2;
    private double side3;
    private int uniqueSides;

    Triangle(double side1, double side2, double side3) throws TriangleException {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;

        if (allSidesAreZero() || hasImpossibleSides() || violatesTriangleInequality()) {
            throw new TriangleException();
        }

        this.uniqueSides = getNumberOfUniqueSides();
    }

    boolean isEquilateral() {
        return uniqueSides == 1;
    }

    boolean isIsosceles() {
        return (uniqueSides == 2 || isEquilateral());
    }

    boolean isScalene() {
        return uniqueSides == 3;
    }

    private boolean allSidesAreZero() {
        return side1 == 0 && side2 == 0 && side3 == 0;
    }

    private boolean hasImpossibleSides() {
        return side1 < 0 || side2 < 0 || side3 < 0;
    }

    private boolean violatesTriangleInequality() {
        return side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1;
    }

    private int getNumberOfUniqueSides() {
        Set<Double> sides = new HashSet<>();

        sides.add(side1);
        sides.add(side2);
        sides.add(side3);

        return sides.size();
    }

}

Version data entries

132 entries across 132 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.179 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.178 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.177 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.176 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.175 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.174 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.173 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.172 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.171 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.170 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.169 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.167 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.166 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.165 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.164 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.163 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.162 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.161 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java
trackler-2.2.1.160 tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java