diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..ed82efc1f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,31 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch via NPM", + "request": "launch", + "runtimeArgs": [ + "run-script", + "debug" + ], + "runtimeExecutable": "npm", + "skipFiles": [ + "/**" + ], + "type": "node" + }, + + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}\\mandatory\\1-syntax-errors.js" + } + ] +} \ No newline at end of file diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..3a0629e4d 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(price) { + return price * 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(price) { + let priceAfterfee = price *0.99 + let priceInBRL = priceAfterfee *5.7; + return Math.round(priceInBRL *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..601de2123 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,26 +16,31 @@ 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(value) { + return '£' + value; } 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 goodCode = +let sum = add(startingValue,10); +let doubleSum = multiply(sum,2); +let goodCode = format(doubleSum); /* ======= 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..33a14427f 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -1,3 +1,5 @@ + +const {toBeOneOf} = require ('jest-extended'); /** Let's peer into the future using a Magic 8 Ball! @@ -14,13 +16,13 @@ Below are the possible answers: - ## Very positive + ##  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. @@ -43,12 +45,154 @@ Very doubtful. */ +// const predictions = [ +// "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.", +// ]; +// const vposArr = [ +// "It is certain.", +// "It is decidedly so.", +// "Without a doubt.", +// "Yes - definitely.", +// "You may rely on it.", +// ]; +// const posArr = [ +// "As I see it, yes.", +// "Most likely.", +// "Outlook good.", +// "Yes.", +// "Signs point to yes.", +// ]; +// const negArr = [ +// "Reply hazy, try again.", +// "Ask again later.", +// "Better not tell you now.", +// "Cannot predict now.", +// "Concentrate and ask again.", +// ]; +// const vnegArr = [ +// "Don't count on it.", +// "My reply is no.", +// "My sources say no.", +// "Outlook not so good.", +// "Very doubtful.", +// ]; + + + + + + + + + + + + + + + + // This should log "The ball has shaken!" // and return the answer. -function shakeBall() { - //Write your code in here + + const predictions = [ + "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.", +]; +//Then I set up array for VeryPositive Answers only... + +const vposArr = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", +]; + +//Then positive answers only + +const posArr = [ + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", +]; + +//then negative only... + +const negArr = [ + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", +]; + +//Then very negative only ... + +const vnegArr = [ + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", +]; + + + + + + + + //This should log "This ball has shaken!" + //and return the answer. + + function shakeBall(){ +//Write your code in here +console.log("The ball has shaken!"); +let randomNum = Math.floor(Math.random() * 20) + 1; +return predictions[randomNum]; } + /* This function should say whether the answer it is given is - very positive @@ -58,10 +202,24 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ +let answer = shakeBall(); function checkAnswer(answer) { //Write your code in here + if (vposArr.includes(answer)){ + return "very positive"; + } + if (posArr.includes(answer)){ + return "positive"; + } + if (negArr.includes(answer)){ + return "negative"; + } + if (vnegArr.includes(answer)){ + return "very negative"; + } } + /* ================================== ======= TESTS - DO NOT MODIFY ===== diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index d9e004465..858a3b58f 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; + let total = a + b; - return "The total is total"; + return `The total is ${total}`; } /* @@ -19,7 +20,7 @@ function getTotal(a, b) { There are some Tests in this file that will help you work out if your code is working. -To run the tests for just this one file, type `npm test -- --testPathPattern 1-syntax-errors` into your terminal +To run the tests for just this one file, type `npm test -- npm--testPathPattern 1-syntax-errors` into your terminal (Reminder: You must have run `npm install` one time before this will work!) =================================================== diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index 9eb8c8cd7..5152c982c 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,16 @@ // 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..83cd28b02 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,16 +1,21 @@ // Add comments to explain what this function does. You're meant to use Google! +//This is a multiplication function,The multiplication assignment ( *= ) operator multiplies a variable by the value of the right operand and assigns the result to the variable. + function getRandomNumber() { return Math.random() * 10; } // Add comments to explain what this function does. You're meant to use Google! +//This is a concatenate function,The concat() method is used to merge two or more arrays. function combine2Words(word1, word2) { - return word1.concat(word2); + + return word1 + word2; } function concatenate(firstWord, 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. + return firstWord + ' ' + secondWord + ' ' + thirdWord; } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..b4acf7e92 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(price) { + return price * 1.2; +} /* CURRENCY FORMATTING @@ -17,7 +19,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) { + let pricewithtax = calculateSalesTax(price); + return '£' + pricewithtax.toFixed(2); +} /* ===================================================