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