diff options
Diffstat (limited to 'javascript/triangle/triangle.js')
-rw-r--r-- | javascript/triangle/triangle.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/javascript/triangle/triangle.js b/javascript/triangle/triangle.js new file mode 100644 index 0000000..dba1449 --- /dev/null +++ b/javascript/triangle/triangle.js @@ -0,0 +1,43 @@ +'use strict'; + +export class Triangle { + constructor(s1, s2, s3) { + this.s1 = s1; + this.s2 = s2; + this.s3 = s3; + } + + get isEquilateral() { + return (this.isTriangle() + && this.s1 === this.s2 + && this.s2 === this.s3); + } + + get isIsosceles() { + return (this.isTriangle() + && ( + this.s1 === this.s2 + || this.s2 === this.s3 + || this.s3 === this.s1 + )); + } + + get isScalene() { + return (this.isTriangle() + && this.s1 !== this.s2 + && this.s2 !== this.s3 + && this.s3 !== this.s1); + } + + isTriangle() { + if ( + // Triangle inequality. + !(this.s1 + this.s2 > this.s3 + && this.s1 + this.s3 > this.s2 + && this.s2 + this.s3 > this.s1) + // Sides of a triangle cannot be zero. + || (this.s1 === 0 || this.s2 === 0 || this.s3 === 0) + ) return false; + return true; + } +} |