From 89f8f046208628b2f8db6507535d9469315f04a9 Mon Sep 17 00:00:00 2001 From: Kristina Dudnyk Date: Fri, 24 Feb 2023 13:48:04 +0000 Subject: [PATCH 1/2] Mandatory & Extra(I have a problem with Magic Ball --- extra/1-currency-conversion.js | 10 ++++-- extra/2-piping.js | 18 +++++----- extra/3-magic-8-ball.js | 66 ++++++++++++++++++++++++++++++++-- mandatory/1-syntax-errors.js | 12 +++---- mandatory/2-logic-error.js | 7 ++-- mandatory/3-function-output.js | 4 +++ mandatory/4-tax.js | 11 ++++-- 7 files changed, 103 insertions(+), 25 deletions(-) diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..5af3fb90d 100644 --- a/extra/1-currency-conversion.js +++ b/extra/1-currency-conversion.js @@ -5,7 +5,9 @@ Write a function that converts a price to USD (exchange rate is 1.4 $ to £) */ -function convertToUSD() {} +function convertToUSD(pound) { + return pound * 1.4; +} /* CURRENCY CONVERSION @@ -15,7 +17,11 @@ function convertToUSD() {} They have also decided that they should add a 1% fee to all foreign transactions, which means you only convert 99% of the £ to BRL. */ -function convertToBRL() {} +function convertToBRL(pound) { + let fee = pound / 100; + let converting = (pound - fee) * 5.7; + return Number(converting.toFixed(2)); +} /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. diff --git a/extra/2-piping.js b/extra/2-piping.js index b4f8c4c1b..191a4debc 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,26 +16,28 @@ the final result to the variable goodCode */ -function add() { - +function add(a, b) { + return a + b; } -function multiply() { - +function multiply(a, b) { + return a * b; } -function format() { - +function format(num) { + return String("£" + num); } const startingValue = 2; // Why can this code be seen as bad practice? Comment your answer. -let badCode = +let badCode = format(multiply(add(startingValue, 10), 2)); /* BETTER PRACTICE */ +let plusTen = add(10, startingValue); +let multiplyByTwo = multiply(plusTen, 2); -let goodCode = +let goodCode = format(multiplyByTwo); /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..53bc7e2fb 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -45,10 +45,39 @@ // This should log "The ball has shaken!" // and return the answer. +const answers = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", +]; + +console.log("The ball has shaken!"); + function shakeBall() { - //Write your code in here + let randonIndex = Math.floor(Math.random() * answers.length); + let result = answers[randonIndex]; + return result; } +console.log(shakeBall()); + /* This function should say whether the answer it is given is - very positive @@ -58,8 +87,37 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ +let answer = shakeBall(); +console.log(answer); + function checkAnswer(answer) { - //Write your code in here + if ( + answer === "It is certain." || + "It is decidedly so." || + "Without a doubt." || + "Yes - definitely." || + "You may rely on it." + ) { + console.log("very positive"); + } else if ( + answer === "As I see it, yes." || + "Most likely." || + "Outlook good." || + "Yes." || + "Signs point to yes." + ) { + console.log("positive"); + } else if ( + answer === "Reply hazy, try again." || + "Ask again later." || + "Better not tell you now." || + "Cannot predict now." || + "Concentrate and ask again." + ) { + console.log("negative"); + } else { + console.log("very negative"); + } } /* @@ -101,7 +159,9 @@ test("magic 8 ball returns different values each time", () => { ); } - let seenPositivities = new Set(Array.from(seenAnswers.values()).map(checkAnswer)); + let seenPositivities = new Set( + Array.from(seenAnswers.values()).map(checkAnswer) + ); if (seenPositivities.size < 2) { throw Error( "Expected to random answers with different positivities each time shakeBall was called, but always got the same one" diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index d9e004465..43cedda07 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -1,16 +1,16 @@ // There are syntax errors in this code - can you fix it to pass the tests? -function addNumbers(a b c) { +function addNumbers(a, b, c) { return a + b + c; } -function introduceMe(name, age) - return `Hello, my {name}` is "and I am $age years old`; - +function introduceMe(name, age) { + return `Hello, my name is ${name} and I am ${age} years old`; +} function getTotal(a, b) { - total = a ++ b; + total = a + b; - return "The total is total"; + return `The total is ${total}`; } /* diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index 9eb8c8cd7..ff5b064e1 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,15 @@ // The syntax for these functions is valid but there are some errors, find them and fix them function trimWord(word) { - return wordtrim(); + return word.trim(); } function getStringLength(word) { - return "word".length(); + return word.length; } function multiply(a, b, c) { - a * b * c; - return; + return a * b * c; } /* diff --git a/mandatory/3-function-output.js b/mandatory/3-function-output.js index 5a953ba60..c07e67a87 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -2,13 +2,17 @@ function getRandomNumber() { return Math.random() * 10; } +// that function using Math method and random . so working together it return random number between 0 and 10 // Add comments to explain what this function does. You're meant to use Google! function combine2Words(word1, word2) { return word1.concat(word2); } +// Method concat joins two patanteses together to single string function concatenate(firstWord, secondWord, thirdWord) { + return firstWord.concat(" ", secondWord, " ", thirdWord); + // Write the body of this function to concatenate three words together. // Look at the test case below to understand what this function is expected to return. } diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..b85e7bb44 100644 --- a/mandatory/4-tax.js +++ b/mandatory/4-tax.js @@ -5,7 +5,9 @@ Sales tax is 20% of the price of the product. */ -function calculateSalesTax() {} +function calculateSalesTax(num) { + return num + num * 0.2; +} /* CURRENCY FORMATTING @@ -17,8 +19,13 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(sele) { + let selesWithTaxes = calculateSalesTax(sele); + let plusDecimalToSeles = selesWithTaxes.toFixed(2); + return "£" + plusDecimalToSeles; + // return "£" + calculateSalesTax(sele).toFixed(2) +} /* =================================================== ======= TESTS - DO NOT MODIFY BELOW THIS LINE ===== From 83f4c2f1e4df1d3d5712d574dbc8fcd846712614 Mon Sep 17 00:00:00 2001 From: Kristina Dudnyk Date: Sat, 25 Feb 2023 07:37:45 +0000 Subject: [PATCH 2/2] Not really good answer for Magic Ball --- extra/3-magic-8-ball.js | 44 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 53bc7e2fb..89e055a7e 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -1,3 +1,7 @@ +// import jest extended matchers +const jestExtended = require("jest-extended"); +// extend the existing jest class with the jest-extended matchers +expect.extend(jestExtended); /** Let's peer into the future using a Magic 8 Ball! @@ -68,15 +72,15 @@ const answers = [ "Very doubtful.", ]; -console.log("The ball has shaken!"); - function shakeBall() { + console.log("The ball has shaken!"); + let randonIndex = Math.floor(Math.random() * answers.length); let result = answers[randonIndex]; return result; } -console.log(shakeBall()); +// console.log(shakeBall()); /* This function should say whether the answer it is given is @@ -88,35 +92,35 @@ console.log(shakeBall()); This function should expect to be called with any value which was returned by the shakeBall function. */ let answer = shakeBall(); -console.log(answer); +// console.log(answer); function checkAnswer(answer) { if ( answer === "It is certain." || - "It is decidedly so." || - "Without a doubt." || - "Yes - definitely." || - "You may rely on it." + answer === "It is decidedly so." || + answer === "Without a doubt." || + answer === "Yes - definitely." || + answer === "You may rely on it." ) { - console.log("very positive"); + return "very positive"; } else if ( answer === "As I see it, yes." || - "Most likely." || - "Outlook good." || - "Yes." || - "Signs point to yes." + answer === "Most likely." || + answer === "Outlook good." || + answer === "Yes." || + answer === "Signs point to yes." ) { - console.log("positive"); + return "positive"; } else if ( answer === "Reply hazy, try again." || - "Ask again later." || - "Better not tell you now." || - "Cannot predict now." || - "Concentrate and ask again." + answer === "Ask again later." || + answer === "Better not tell you now." || + answer === "Cannot predict now." || + answer === "Concentrate and ask again." ) { - console.log("negative"); + return "negative"; } else { - console.log("very negative"); + return "very negative"; } }