Skip to content

Commit 05d876d

Browse files
zFlxwappgurueu
andauthored
feat(maths): juggler sequence (TheAlgorithms#120)
* feat(data-struct): binary search tree * fix: improvements part 1 * fix: improvements part 2 * Fix failing tests * feat: juggler sequence * refactor: changes if statement to ternary operator --------- Co-authored-by: Lars Müller <[email protected]>
1 parent 23c96de commit 05d876d

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

maths/juggler_sequence.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* The juggler sequence is a integer sequence that starts with an positive integer a and the subsequent terms are
3+
* described as following:
4+
* if a_k is even:
5+
* a_k+1 = floor(sqrt(a_k))
6+
* else:
7+
* a_k+1 = floor(sqrt(a_k^3))
8+
*
9+
* Time Complexity: linear (O(n))
10+
*
11+
* @param a The number to start with
12+
* @param n The index of the searched number in the sequence.
13+
* @returns The number at index n in the sequence.
14+
* @see https://en.wikipedia.org/wiki/Juggler_sequence
15+
*/
16+
export const jugglerSequence = (a: number, n: number) => {
17+
let k: number = a;
18+
for (let i: number = 0; i < n; i++) {
19+
k = Math.floor(Math.pow(k, (k % 2 === 0 ? 1 : 3) / 2));
20+
}
21+
22+
return k;
23+
};

maths/test/juggler_sequence.test.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { jugglerSequence } from '../juggler_sequence';
2+
3+
describe('jugglerSequence', () => {
4+
it.each([
5+
[3, 3, 36],
6+
[3, 5, 2],
7+
[7, 3, 2],
8+
[5, 1, 11],
9+
])('%i at index %i should equal %i', (a, n, k) => {
10+
expect(jugglerSequence(a, n)).toBe(k);
11+
});
12+
});

0 commit comments

Comments
 (0)