diff --git a/extra/1-factorial.js b/extra/1-factorial.js index da9f8e6c..847f83eb 100644 --- a/extra/1-factorial.js +++ b/extra/1-factorial.js @@ -9,6 +9,17 @@ */ function factorial(input) { + let result = input; + // 0 and 1 are special cases are 0! and 1! equates to 1 but would equal 0 using the function. + if (input === 0 || input === 1) { + return 1; + } + // while loop, if input is greater than 1; input = (input-1), the variable "result" needs to retain the value from previous loop/iteration and multiply by the current input value so the calculation for result will equate to result * input. As "result" is called within itself, the value currently stored for "result" will be used will be from the calculation from previous iteration and new value will be reassigned to "result" as the calculation result * input will be performed again and repeated for each time the function loops until input is no longer greater 1. + while (input > 1) { + input--; + result = result * input; + } + return result; // TODO } diff --git a/mandatory/1-fix-functions.js b/mandatory/1-fix-functions.js index 6323604f..9e1ca5be 100644 --- a/mandatory/1-fix-functions.js +++ b/mandatory/1-fix-functions.js @@ -10,10 +10,8 @@ */ -function getMood() { - let isHappy = true; - - if (isHappy) { +function getMood(isHappy) { + if (isHappy === true) { return "I am happy"; } else { return "I am not happy"; @@ -21,9 +19,9 @@ function getMood() { } function greaterThan10(num) { - let isBigEnough; + let isBigEnough = num; - if (isBigEnough) { + if (isBigEnough > 10) { return "num is greater than 10"; } else { return "num is not big enough"; diff --git a/mandatory/2-function-creation.js b/mandatory/2-function-creation.js index d4590920..0e742177 100644 --- a/mandatory/2-function-creation.js +++ b/mandatory/2-function-creation.js @@ -4,7 +4,13 @@ 1. the user should be 18 or older 2. the user must be logged in */ -function isAcceptableUser(userAge, isLoggedIn) {} +function isAcceptableUser(userAge, isLoggedIn) { + if (userAge >= 18 && isLoggedIn === true) { + return true; + } else { + return false; + } +} /* Complete the function to apply discount percent based on how much is totalPrice in user cart. @@ -15,18 +21,38 @@ function isAcceptableUser(userAge, isLoggedIn) {} is applieds and 142.5 should be returned) */ -function applyDiscount(totalPrice) {} +function applyDiscount(totalPrice) { + if (totalPrice > 200) { + return totalPrice * 0.9; + } else { + return totalPrice * 0.95; + } +} /* Complete the function to print to the console the odd numbers between 1 and limit (use a while loop): */ -function printOddNumbers(limit) {} +function printOddNumbers(limit) { + let count = 0; + while (count < limit) { + if (count % 2 != 0) { + console.log(count); + } + count++; + } +} /* Complete the buyTwoGetTheCheapestFree function: if user buys two items, the cheapest item will be free! The function should return the price to be paid once the discount is applied. */ -function buyTwoGetTheCheapestFree(price1, price2) {} +function buyTwoGetTheCheapestFree(price1, price2) { + if (price1 > price2) { + return price1; + } else { + return price2; + } +} /* Complete the function to determine if it is suitable for a person to register based on their age! @@ -34,7 +60,15 @@ function buyTwoGetTheCheapestFree(price1, price2) {} - if the person is older than 12 and younger than 90 it should return "You Can Register" - if the person is 90 or older it should return "You Don't Need To Register" */ -function canRegister(age) {} +function canRegister(age) { + if (age <= 12) { + return "You Are Too Young To Register"; + } else if (age > 12 && age < 90) { + return "You Can Register"; + } else { + return "You Don't Need To Register"; + } +} /* Complete the function so that it prints out to the console numbers in reverse order starting at @@ -45,7 +79,12 @@ function canRegister(age) {} ) */ -function countReverse(number) {} +function countReverse(number) { + while (number >= 1) { + console.log(number); + number--; + } +} /* ======= TESTS - DO NOT MODIFY ===== */ @@ -90,11 +129,11 @@ describe("printOddNumbers", () => { const consoleLogSpy = jest.spyOn(console, "log"); printOddNumbers(10); - expect(consoleLogSpy).toHaveBeenNthCalledWith(1,1); - expect(consoleLogSpy).toHaveBeenNthCalledWith(2,3); - expect(consoleLogSpy).toHaveBeenNthCalledWith(3,5); - expect(consoleLogSpy).toHaveBeenNthCalledWith(4,7); - expect(consoleLogSpy).toHaveBeenNthCalledWith(5,9); + expect(consoleLogSpy).toHaveBeenNthCalledWith(1, 1); + expect(consoleLogSpy).toHaveBeenNthCalledWith(2, 3); + expect(consoleLogSpy).toHaveBeenNthCalledWith(3, 5); + expect(consoleLogSpy).toHaveBeenNthCalledWith(4, 7); + expect(consoleLogSpy).toHaveBeenNthCalledWith(5, 9); consoleLogSpy.mockRestore(); }); @@ -141,13 +180,13 @@ describe("countReverse", () => { const consoleLogSpy = jest.spyOn(console, "log"); countReverse(7); - expect(consoleLogSpy).toHaveBeenNthCalledWith(1,7); - expect(consoleLogSpy).toHaveBeenNthCalledWith(2,6); - expect(consoleLogSpy).toHaveBeenNthCalledWith(3,5); - expect(consoleLogSpy).toHaveBeenNthCalledWith(4,4); - expect(consoleLogSpy).toHaveBeenNthCalledWith(5,3); - expect(consoleLogSpy).toHaveBeenNthCalledWith(6,2); - expect(consoleLogSpy).toHaveBeenNthCalledWith(7,1); + expect(consoleLogSpy).toHaveBeenNthCalledWith(1, 7); + expect(consoleLogSpy).toHaveBeenNthCalledWith(2, 6); + expect(consoleLogSpy).toHaveBeenNthCalledWith(3, 5); + expect(consoleLogSpy).toHaveBeenNthCalledWith(4, 4); + expect(consoleLogSpy).toHaveBeenNthCalledWith(5, 3); + expect(consoleLogSpy).toHaveBeenNthCalledWith(6, 2); + expect(consoleLogSpy).toHaveBeenNthCalledWith(7, 1); consoleLogSpy.mockRestore(); });