Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8352d26

Browse files
chore: Merge pull request #794 from Badhusha-Akhthaar/master
Added new Mathematical algorithm : Figurate Numbers
2 parents f2573ca + 4358537 commit 8352d26

File tree

2 files changed

+148
-0
lines changed

2 files changed

+148
-0
lines changed

‎Maths/FigurateNumber.js

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
Problem Statment and Explanation :
3+
Triangular => https://en.wikipedia.org/wiki/Triangular_number
4+
Tetrahedral => https://en.wikipedia.org/wiki/Tetrahedral_number
5+
Pentatope => https://en.wikipedia.org/wiki/Pentatope_number
6+
7+
8+
Example:
9+
Triangular => (0, 1, 3, 6, 10, 15, 21, 28, 36, 45)
10+
Tetrahedral => (1, 4, 10, 20, 35, 56, 84, 120, 165,)
11+
Pentatope => (1, 5, 15, 35, 70, 126, 210, 330, 495)
12+
*/
13+
14+
/**
15+
*
16+
* @param {*} number
17+
* @returns
18+
*/
19+
const isTriangular = (number) => {
20+
for (let i = 0; i <= number; i++) {
21+
if ((i * (i + 1)) / 2 === number) {
22+
return true
23+
} else if ((i * (i + 1)) / 2 > number) {
24+
return false
25+
}
26+
}
27+
return false
28+
}
29+
30+
/**
31+
*
32+
* @param {*} number
33+
* @returns
34+
*/
35+
const isTetrahedral = (number) => {
36+
for (let i = 1; i <= number; i++) {
37+
if ((i * (i + 1) * (i + 2)) / 6 === number) {
38+
return true
39+
} else if ((i * (i + 1) * (i + 2)) / 6 > number) {
40+
return false
41+
}
42+
}
43+
return false
44+
}
45+
/**
46+
*
47+
* @param {*} number
48+
* @returns
49+
*/
50+
const isPentatope = (number) => {
51+
for (let i = 1; i <= number; i++) {
52+
if ((i * (i + 1) * (i + 2) * (i + 3)) / 24 === number) {
53+
return true
54+
} else if ((i * (i + 1) * (i + 2) * (i + 3)) / 24 > number) {
55+
return false
56+
}
57+
}
58+
return false
59+
}
60+
61+
/**
62+
*
63+
* @param {*} number
64+
* @returns
65+
*/
66+
let checkAll = (number) => {
67+
return {
68+
isTriangular: isTriangular(number),
69+
isTetrahedral: isTetrahedral(number),
70+
isPentatope: isPentatope(number)
71+
}
72+
}
73+
export { isTriangular }
74+
export { isTetrahedral }
75+
export { isPentatope }
76+
export { checkAll }

‎Maths/test/FigurateNumber.test.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import {
2+
isTriangular,
3+
isTetrahedral,
4+
isPentatope,
5+
checkAll
6+
} from '../FigurateNumber'
7+
8+
describe('FigurateNumber', () => {
9+
it('Triangular : should return true', () => {
10+
expect(isTriangular(1)).toEqual(true)
11+
})
12+
it('Triangular : should return true', () => {
13+
expect(isTriangular(3)).toEqual(true)
14+
})
15+
16+
it('Triangular : should return false', () => {
17+
expect(isTriangular(5)).toEqual(false)
18+
})
19+
20+
it('Triangular : should return true', () => {
21+
expect(isTriangular(171)).toEqual(true)
22+
})
23+
/** End */
24+
25+
it('Tetrahedral : should return true', () => {
26+
expect(isTetrahedral(1)).toEqual(true)
27+
})
28+
it('Tetrahedral : should return true', () => {
29+
expect(isTetrahedral(4)).toEqual(true)
30+
})
31+
32+
it('Tetrahedral : should return false', () => {
33+
expect(isTetrahedral(3)).toEqual(false)
34+
})
35+
36+
it('Tetrahedral : should return true', () => {
37+
expect(isTetrahedral(165)).toEqual(true)
38+
})
39+
40+
/** End */
41+
it('Pentatope : should return true', () => {
42+
expect(isPentatope(1)).toEqual(true)
43+
})
44+
it('Pentatope : should return true', () => {
45+
expect(isPentatope(5)).toEqual(true)
46+
})
47+
48+
it('Pentatope : should return false', () => {
49+
expect(isPentatope(3)).toEqual(false)
50+
})
51+
52+
it('Pentatope : should return true', () => {
53+
expect(isPentatope(1001)).toEqual(true)
54+
})
55+
/** End */
56+
57+
it('Check All : should return all true',() => {
58+
expect(checkAll(1)).toEqual({
59+
isTriangular: true,
60+
isTetrahedral: true,
61+
isPentatope: true
62+
})
63+
})
64+
65+
it('Check All : should return all true,true,false',() => {
66+
expect(checkAll(15)).toEqual({
67+
isTriangular: true,
68+
isTetrahedral: false,
69+
isPentatope: true
70+
})
71+
})
72+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /