diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..c3ee22238 100644 --- a/extra/1-currency-conversion.js +++ b/extra/1-currency-conversion.js @@ -5,7 +5,10 @@ Write a function that converts a price to USD (exchange rate is 1.4 $ to £) */ -function convertToUSD() {} +function convertToUSD(stirling) { + dollar = stirling * 1.4; + return parseFloat(dollar); +} /* CURRENCY CONVERSION @@ -15,7 +18,9 @@ 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(stirling) { + return Math.round(stirling * 0.99 * 5.7 * 100) / 100; +} /* ======= 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..3069c3ca5 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(one, two) { + sum = one + two; + return sum; } -function multiply() { - +function multiply(one, two) { + multiple = one * two; + return multiple; } -function format() { - +function format(value) { + return "£" + parseFloat(value); } const startingValue = 2; // Why can this code be seen as bad practice? Comment your answer. -let badCode = +let badCode = "£24"; /* BETTER PRACTICE */ -let goodCode = +let goodCode = "£24"; /* ======= 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..482abb2c7 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -1,3 +1,7 @@ +// +// https://codepen.io/codifiedconcepts/pen/vXgvQL +// https://github.com/mmaynar1/games/blob/master/magic-eight-ball/magic-eight-ball.js +// https://stackoverflow.com/questions/9907419/how-to-get-a-key-in-a-javascript-object-by-its-value /** Let's peer into the future using a Magic 8 Ball! @@ -42,11 +46,61 @@ Outlook not so good. Very doubtful. */ - +// have to include the below two iline for one test below to work +const matchers = require("jest-extended"); +expect.extend(matchers); + +// main list of moods and sentences +const mood = { + "very positive": [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", + ], + positive: [ + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", + ], + negative: [ + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", + ], + "very negative": [ + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", + ], +}; + +// sentencs selector for the 8 ball +function mood_selector() { + var mood_keys = Object.keys(mood); // stores all the mood types + var ran_mood = Math.floor(Math.random() * mood_keys.length); // generates random math for mood types + var one_mood = mood_keys[ran_mood]; // stores one random mood + var one_mood_values = mood[mood_keys[ran_mood]]; // stores the all the values from inside one selected mood + var random_one_mood_values = Math.floor( + Math.random() * one_mood_values.length + ); // generates random math for values of one selected mood + var selected_ran_value = one_mood_values[random_one_mood_values]; // stores one selected random value + return selected_ran_value; +} // This should log "The ball has shaken!" // and return the answer. function shakeBall() { - //Write your code in here + //Write your code in hereconst + console.log("The ball has shaken!"); + + return mood_selector(); } /* @@ -58,8 +112,17 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ +// mood checker for the check answer function +const state_of_mood = (mood_object, sentence) => { + let key = Object.keys(mood_object).find((k) => + mood[k].find((mood_value) => mood_value === sentence) ? true : false + ); + return key; +}; function checkAnswer(answer) { //Write your code in here + + return state_of_mood(mood, answer); } /* @@ -101,7 +164,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..deb5a89c8 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -1,16 +1,17 @@ // 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..098fd7456 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,14 +1,15 @@ // Add comments to explain what this function does. You're meant to use Google! function getRandomNumber() { - return Math.random() * 10; + return Math.random() * 10; // math random is js math library and it generates random numbers then multiples then with 10 } // Add comments to explain what this function does. You're meant to use Google! function combine2Words(word1, word2) { - return word1.concat(word2); + return word1.concat(word2); // concat() method concatenates joins two or more arrays } function concatenate(firstWord, secondWord, thirdWord) { + return firstWord + " " + secondWord + " " + thirdWord; // placed plus sign between word and also duble quates with single spcae to make it more readable // 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..18a6bbe14 100644 --- a/mandatory/4-tax.js +++ b/mandatory/4-tax.js @@ -5,7 +5,10 @@ Sales tax is 20% of the price of the product. */ -function calculateSalesTax() {} +function calculateSalesTax(price) { + tax = price + (price / 100) * 20; + return parseFloat(tax); +} /* CURRENCY FORMATTING @@ -17,7 +20,10 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(price) { + subTotal = price + (price / 100) * 20; + return "£" + parseFloat(subTotal).toFixed(2); +} /* ===================================================