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 915ca4c

Browse files
Added new Mathematical algorithm , Figurate Numbers
Algorithm for checking whether input number does belong to any type of figurate numbers
1 parent a9d2051 commit 915ca4c

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 によって変換されたページ (->オリジナル) /