Skip to content

Commit ce41534

Browse files
committed
is this a triangle
1 parent 7ab7ec8 commit ce41534

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

is_this_a_triangle/main.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function isTriangle(a,b,c) {
2+
/// a mathmatical way
3+
return a + b > c && a + c > b && c + b > a;
4+
5+
/// deconstructing assignment (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)
6+
[a, b, c] = [a, b, c].sort((x, y) => x-y);
7+
return a + b > c;
8+
9+
if(a <= 0 || b <= 0 || c <= 0) return false;
10+
11+
/// ES6
12+
const array = [a, b, c].sort((a, b) => a - b);
13+
return array.pop() < array.reduce((acc, cur) => acc + cur, 0);
14+
15+
/// Simple way
16+
let biggest = a;
17+
let twoSides = b + c;
18+
if(biggest < b) biggest = b, twoSides = a + c;
19+
if(biggest < c) biggest = c, twoSides = a + b;
20+
return biggest < twoSides;
21+
}
22+
23+
module.exports = isTriangle;

is_this_a_triangle/main.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const isTriangle = require('./main');
2+
3+
describe('negative test', () => {
4+
test('-1, 1, 1 returns false', () => {
5+
expect(isTriangle(-1, 1, 1)).toBe(false);
6+
});
7+
test('1, 2, 2 returns true', () => {
8+
expect(isTriangle(1, 2, 2)).toBe(true);
9+
});
10+
});
11+
12+
describe('find the biggest number', () => {
13+
test('3, 2, 2 returns true', () => {
14+
expect(isTriangle(3, 2, 2)).toBe(true);
15+
});
16+
test('7, 5, 1 returns false', () => {
17+
expect(isTriangle(7, 5, 1)).toBe(false);
18+
});
19+
test('2, 4, 6 returns false', () => {
20+
expect(isTriangle(2, 4, 6)).toBe(false);
21+
});
22+
test('10, 1, 8 returns false', () => {
23+
expect(isTriangle(10, 1, 8)).toBe(false);
24+
});
25+
});

0 commit comments

Comments
 (0)