Skip to content

Commit

Permalink
Complete all functions and pass all tests
Browse files Browse the repository at this point in the history
  • Loading branch information
worriedape committed Dec 23, 2024
1 parent 5ff73d5 commit f426ef9
Show file tree
Hide file tree
Showing 3 changed files with 2,127 additions and 31 deletions.
34 changes: 21 additions & 13 deletions 08_calculator/calculator.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
const add = function() {
const add = function (a, b) {
return a + b;
};

const subtract = function() {
const subtract = function (a, b) {
return a - b;
};

const sum = function() {
const sum = function (arr) {
return arr.reduce((prev, current) => prev + current, 0);
};

const multiply = function() {

const multiply = function (arr) {
return arr.reduce((prev, current) => prev * current);
};

const power = function() {

const power = function (a, b) {
let x = a;
for (let i = 1; i < b; i++) {
x *= a;
}
return x;
};

const factorial = function() {

const factorial = function (num) {
let total = 1;
for (let i = num; i > 0; i--) {
total *= i;
}
return total;
};

// Do not edit below this line
Expand All @@ -29,5 +37,5 @@ module.exports = {
sum,
multiply,
power,
factorial
factorial,
};
36 changes: 18 additions & 18 deletions 08_calculator/calculator.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,85 +5,85 @@ describe('add', () => {
expect(calculator.add(0, 0)).toBe(0);
});

test.skip('adds 2 and 2', () => {
test('adds 2 and 2', () => {
expect(calculator.add(2, 2)).toBe(4);
});

test.skip('adds positive numbers', () => {
test('adds positive numbers', () => {
expect(calculator.add(2, 6)).toBe(8);
});
});

describe('subtract', () => {
test.skip('subtracts numbers', () => {
test('subtracts numbers', () => {
expect(calculator.subtract(10, 4)).toBe(6);
});

test.skip('subtracts negative numbers', () => {
test('subtracts negative numbers', () => {
expect(calculator.subtract(-10, -4)).toBe(-6);
});

test.skip('subtracts numbers of mixed parity', () => {
test('subtracts numbers of mixed parity', () => {
expect(calculator.subtract(-8, 7)).toBe(-15);
});
});

describe('sum', () => {
test.skip('computes the sum of an empty array', () => {
test('computes the sum of an empty array', () => {
expect(calculator.sum([])).toBe(0);
});

test.skip('computes the sum of an array of one number', () => {
test('computes the sum of an array of one number', () => {
expect(calculator.sum([7])).toBe(7);
});

test.skip('computes the sum of an array of two numbers', () => {
test('computes the sum of an array of two numbers', () => {
expect(calculator.sum([7, 11])).toBe(18);
});

test.skip('computes the sum of an array of many numbers', () => {
test('computes the sum of an array of many numbers', () => {
expect(calculator.sum([1, 3, 5, 7, 9])).toBe(25);
});
});

describe('multiply', () => {
test.skip('multiplies two numbers', () => {
test('multiplies two numbers', () => {
expect(calculator.multiply([2, 4])).toBe(8);
});

test.skip('multiplies several numbers', () => {
test('multiplies several numbers', () => {
expect(calculator.multiply([2, 4, 6, 8, 10, 12, 14])).toBe(645120);
});
});

describe('power', () => {
test.skip('raises one number to the power of another number', () => {
test('raises one number to the power of another number', () => {
expect(calculator.power(4, 3)).toBe(64); // 4 to third power is 64
});

test.skip('raises one number to the power of a large number', () => {
test('raises one number to the power of a large number', () => {
expect(calculator.power(3, 10)).toBe(59049); // 3 to tenth power is 59049
});
});

describe('factorial', () => {
test.skip('computes the factorial of 0', () => {
test('computes the factorial of 0', () => {
expect(calculator.factorial(0)).toBe(1); // 0! = 1
});

test.skip('computes the factorial of 1', () => {
test('computes the factorial of 1', () => {
expect(calculator.factorial(1)).toBe(1);
});

test.skip('computes the factorial of 2', () => {
test('computes the factorial of 2', () => {
expect(calculator.factorial(2)).toBe(2);
});

test.skip('computes the factorial of 5', () => {
test('computes the factorial of 5', () => {
expect(calculator.factorial(5)).toBe(120);
});

test.skip('computes the factorial of 10', () => {
test('computes the factorial of 10', () => {
expect(calculator.factorial(10)).toBe(3628800);
});
});
Loading

0 comments on commit f426ef9

Please sign in to comment.