Sha256: 4343e9892806ac02d187e5a61c95c91b8fdbafdc95ae7d8c6782b9007dde7ad9

Contents?: true

Size: 844 Bytes

Versions: 396

Compression:

Stored size: 844 Bytes

Contents

class Triangle {
  constructor(...sides) {
    this.sides = sides;
  }

  kind() {
    if (this.isIllegal()) {
      throw new TypeError('illegal');
    }

    if (this.isEquilateral()) {
      return 'equilateral';
    }

    if (this.isIsosceles()) {
      return 'isosceles';
    }

    return 'scalene';
  }

  isIllegal() {
    return this.violatesInequality() || this.hasImpossibleSides();
  }

  violatesInequality() {
    const [a, b, c] = this.sides;
    return a + b < c || a + c < b || b + c < a;
  }

  hasImpossibleSides() {
    const [a, b, c] = this.sides;
    return a <= 0 || b <= 0 || c <= 0;
  }

  isEquilateral() {
    return this.uniqueSidesLength() === 1;
  }

  isIsosceles() {
    return this.uniqueSidesLength() === 2;
  }

  uniqueSidesLength() {
    return new Set(this.sides).size;
  }
}

export default Triangle;

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.179 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.178 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.177 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.176 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.175 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.174 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.173 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.172 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.171 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.170 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.169 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.167 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.166 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.165 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.164 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.163 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.162 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.161 tracks/ecmascript/exercises/triangle/example.js
trackler-2.2.1.160 tracks/ecmascript/exercises/triangle/example.js