From 87e953c6bec2de810bcaaf78bfa8cbff3b0b99f2 Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Fri, 1 Jul 2022 23:47:41 +0200 Subject: [PATCH 1/9] update --- exercises/B-hello-world/exercise.js | 1 + exercises/C-variables/exercise.js | 5 +++- exercises/D-strings/exercise.js | 3 ++- exercises/E-strings-concatenation/exercise.js | 3 +++ exercises/F-strings-methods/exercise.js | 5 +++- exercises/F-strings-methods/exercise2.js | 6 +++-- exercises/G-numbers/exercise.js | 14 +++++++++++ exercises/I-floats/exercise.js | 14 +++++++++++ exercises/J-functions/exercise.js | 2 +- exercises/J-functions/exercise2.js | 2 +- exercises/K-functions-parameters/exercise.js | 4 ++-- exercises/K-functions-parameters/exercise2.js | 4 +++- exercises/K-functions-parameters/exercise3.js | 4 +++- exercises/K-functions-parameters/exercise4.js | 6 +++-- exercises/K-functions-parameters/exercise5.js | 4 +++- exercises/L-functions-nested/exercise.js | 24 +++++++++++++++++++ mandatory/1-syntax-errors.js | 9 +++---- package.json | 12 +++++++--- 18 files changed, 101 insertions(+), 21 deletions(-) diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b179ee953..7e5c7f75a 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1 +1,2 @@ console.log("Hello world"); +console.log("Hello World. I am Kwanda"); diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..2f5a96721 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `greeting` +let greeting = "Hello World"; -console.log(greeting); +for (i = 1; i < 4; i++) { + console.log(greeting); +} diff --git a/exercises/D-strings/exercise.js b/exercises/D-strings/exercise.js index 2cffa6a81..03f0fd74f 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,4 @@ // Start by creating a variable `message` +let message = "This is a string"; -console.log(message); +console.log(message + "\n" + typeof message); diff --git a/exercises/E-strings-concatenation/exercise.js b/exercises/E-strings-concatenation/exercise.js index 2cffa6a81..85f24e9e7 100644 --- a/exercises/E-strings-concatenation/exercise.js +++ b/exercises/E-strings-concatenation/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `message` +let greetingStart = "Hello, my name is "; +let name_ = "Daniel"; +let message = greetingStart + name_; console.log(message); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..6833d1427 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `message` +let greeting = "Hello, my name is Daniel"; +const name_ = "Daniel"; +let nameLength = name_.length; -console.log(message); +console.log(greeting + " and my name is " + nameLength + " characters long"); diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..8ee4919ac 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,5 @@ -const name = " Daniel "; +let greeting = "Hello, my name is Daniel"; +const name_ = "Daniel".trim(); +let nameLength = name_.length; -console.log(message); +console.log(greeting + " and my name is " + nameLength + " characters long"); diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..8acc62b3a 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,15 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` +let numberOfStudents = 15; +let numberOfMentors = 8; +let total = numberOfStudents + numberOfMentors; + +console.log( + "Number of students: " + + numberOfStudents + + "\n" + + "Number of mentors: " + + numberOfMentors + + "\n" + + "Total number of students and mentors: " + + total +); diff --git a/exercises/I-floats/exercise.js b/exercises/I-floats/exercise.js index a5bbcd852..9f9c3867f 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,16 @@ var numberOfStudents = 15; var numberOfMentors = 8; +let total = numberOfStudents + numberOfMentors; + +let percentageOfStudents = Math.round((numberOfStudents / total) * 100); +let percentageOfMentors = Math.round((numberOfMentors / total) * 100); + +console.log( + "Percentage of students: " + + percentageOfStudents + + "%" + + "\n" + + "Percentage of mentors: " + + percentageOfMentors + + "%" +); diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..e7278f7bd 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,5 +1,5 @@ function halve(number) { - // complete the function here + return number / 2; } var result = halve(12); diff --git a/exercises/J-functions/exercise2.js b/exercises/J-functions/exercise2.js index 82ef5e780..95ef62512 100644 --- a/exercises/J-functions/exercise2.js +++ b/exercises/J-functions/exercise2.js @@ -1,5 +1,5 @@ function triple(number) { - // complete function here + return number * 3; } var result = triple(12); diff --git a/exercises/K-functions-parameters/exercise.js b/exercises/K-functions-parameters/exercise.js index 8d5db5e69..4614501b1 100644 --- a/exercises/K-functions-parameters/exercise.js +++ b/exercises/K-functions-parameters/exercise.js @@ -1,6 +1,6 @@ // Complete the function so that it takes input parameters -function multiply() { - // Calculate the result of the function and return it +function multiply(num1, num2) { + return num1 * num2; } // Assign the result of calling the function the variable `result` diff --git a/exercises/K-functions-parameters/exercise2.js b/exercises/K-functions-parameters/exercise2.js index db7a8904b..425770705 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,4 +1,6 @@ -// Declare your function first +function divide(num1, num2) { + return num1 / num2; +} var result = divide(3, 4); diff --git a/exercises/K-functions-parameters/exercise3.js b/exercises/K-functions-parameters/exercise3.js index 537e9f4ec..084a884bf 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,4 +1,6 @@ -// Write your function here +function createGreeting(str) { + return "Hello my name is " + str; +} var greeting = createGreeting("Daniel"); diff --git a/exercises/K-functions-parameters/exercise4.js b/exercises/K-functions-parameters/exercise4.js index 7ab44589e..6df8b08b4 100644 --- a/exercises/K-functions-parameters/exercise4.js +++ b/exercises/K-functions-parameters/exercise4.js @@ -1,5 +1,7 @@ -// Declare your function first +function sum(num1, num2) { + return num1 + num2; +} -// Call the function and assign to a variable `sum` +var sum = sum(13, 124); console.log(sum); diff --git a/exercises/K-functions-parameters/exercise5.js b/exercises/K-functions-parameters/exercise5.js index 7c5bcd605..698cbaa56 100644 --- a/exercises/K-functions-parameters/exercise5.js +++ b/exercises/K-functions-parameters/exercise5.js @@ -1,4 +1,6 @@ -// Declare your function here +function createLongGreeting(str, num) { + return "Hello my name is " + str + " and I'm " + num + " years old"; +} const greeting = createLongGreeting("Daniel", 30); diff --git a/exercises/L-functions-nested/exercise.js b/exercises/L-functions-nested/exercise.js index a5d377442..e6ca58048 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -1,5 +1,29 @@ +function shoutyGreeting(str) { + greeting = "Hello " + str; + return greeting.toUpperCase(); +} + var mentor1 = "Daniel"; var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; + +for (x = 1; x < 6; x++) { + if (x == 1) { + var greeting = shoutyGreeting(mentor1); + console.log(greeting); + } else if (x == 2) { + var greeting = shoutyGreeting(mentor2); + console.log(greeting); + } else if (x == 3) { + var greeting = shoutyGreeting(mentor3); + console.log(greeting); + } else if (x == 4) { + var greeting = shoutyGreeting(mentor4); + console.log(greeting); + } else if (x == 5) { + var greeting = shoutyGreeting(mentor5); + console.log(greeting); + } +} diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index a10cc9ac2..69afcbd71 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -1,14 +1,15 @@ // 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 " + name "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"; } diff --git a/package.json b/package.json index 93e0861e3..9e7f2ffeb 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,21 @@ "url": "https://github.com/CodeYourFuture/JavaScript-Core-1-Coursework-Week1/issues" }, "jest": { - "setupFilesAfterEnv": ["jest-extended"], + "setupFilesAfterEnv": [ + "jest-extended" + ], "projects": [ { "displayName": "mandatory", - "testMatch": ["/mandatory/*.js"] + "testMatch": [ + "/mandatory/*.js" + ] }, { "displayName": "extra", - "testMatch": ["/extra/*.js"] + "testMatch": [ + "/extra/*.js" + ] } ] }, From ed55bf0704662cb9a35153ad5ec04762fd46996a Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 10:40:23 +0200 Subject: [PATCH 2/9] update --- mandatory/1-syntax-errors.js | 4 ++-- mandatory/2-logic-error.js | 7 +++---- mandatory/3-function-output.js | 5 +++-- mandatory/4-tax.js | 11 +++++++++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index 69afcbd71..98360ac6b 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -5,13 +5,13 @@ function addNumbers(a, b, c) { } function introduceMe(name, age) { - return "Hello, my name is " + name + "and I am " + age + "years old"; + return "Hello, my name is " + name + " and I am " + age + " years old"; } function getTotal(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 9cca7603b..37c4ebc15 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,15 @@ // The syntax for this function is valid but it has an error, find it and fix it. 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..ca4fa50fd 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,16 +1,17 @@ // Add comments to explain what this function does. You're meant to use Google! function getRandomNumber() { - return Math.random() * 10; + return Math.random() * 10; // returns a random number multiplied by 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); // joins word1 with 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.concat(" " + secondWord + " " + thirdWord); } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..2ff0f3145 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) { + priceWithTax = (price * 20) / 100 + price; + return priceWithTax; +} /* CURRENCY FORMATTING @@ -17,7 +20,11 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(price) { + amount = calculateSalesTax(price); + newAmount = amount.toFixed(2); + return "£" + newAmount; +} /* =================================================== From 215a35219e7a97b56e8e8a63dfe333583c108a16 Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 11:38:34 +0200 Subject: [PATCH 3/9] update --- exercises/B-hello-world/exercise.js | 13 +++++++++++-- extra/1-currency-conversion.js | 10 ++++++++-- extra/2-piping.js | 19 ++++++++++--------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index 7e5c7f75a..b6c0f5f9f 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1,2 +1,11 @@ -console.log("Hello world"); -console.log("Hello World. I am Kwanda"); +// console.log("Hello world"); +// console.log("Hello World. I am Kwanda"); + +function convertToBRL(price) { + amount = (price - (price * 1) / 100) * 5.7; + newAmount = amount.toFixed(2); + return parseFloat(newAmount); +} + +amount = convertToBRL(1.5); +console.log(parseFloat(amount)); diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..d86159d5e 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) { + amount = (price - (price * 1) / 100) * 5.7; + newAmount = amount.toFixed(2); + return parseFloat(newAmount); +} /* ======= 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..03b6dcf7b 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,27 +16,28 @@ the final result to the variable goodCode */ -function add() { - +function add(num1, num2) { + return num1 + num2; } -function multiply() { - +function multiply(num1, num2) { + return num1 * num2; } -function format() { - +function format(num) { + return "£" + num.toString(); } 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 goodCode = dd(startingValue, 10); +goodCode = multiply(goodCode, 2); +goodCode = format(goodCode); /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. From 828c7f5cb337d2a470482e9714267a62b4eadeb8 Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 11:40:52 +0200 Subject: [PATCH 4/9] Update 2-piping.js --- extra/2-piping.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/2-piping.js b/extra/2-piping.js index 03b6dcf7b..99a034af0 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -35,7 +35,7 @@ let badCode = format(multiply(add(startingValue, 10), 2)); /* BETTER PRACTICE */ -let goodCode = dd(startingValue, 10); +let goodCode = add(startingValue, 10); goodCode = multiply(goodCode, 2); goodCode = format(goodCode); /* ======= TESTS - DO NOT MODIFY ===== From 8d56133c217b6fe883a7b49391a853de9529b6ac Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 12:26:02 +0200 Subject: [PATCH 5/9] Update 3-magic-8-ball.js --- extra/3-magic-8-ball.js | 47 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..9d91b9f92 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -42,11 +42,43 @@ Outlook not so good. Very doubtful. */ +const matchers = require("jest-extended"); // adds additional matchers to Jest's default ones making it easy to test everything +expect.extend(matchers); + +const possibleAnswers = [ + // 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.", +]; // This should log "The ball has shaken!" // and return the answer. function shakeBall() { //Write your code in here + let randomAnswer = Math.round(Math.random() * 20); + console.log("The ball has shaken!"); + return possibleAnswers[randomAnswer]; } /* @@ -60,6 +92,17 @@ function shakeBall() { */ function checkAnswer(answer) { //Write your code in here + let indexOfAnswers = possibleAnswers.indexOf(answer); + + if (indexOfAnswers <= 4) { + return "very positive"; + } else if (indexOfAnswers >= 5 && indexOfAnswers < 10) { + return "positive"; + } else if (indexOfAnswers >= 10 && indexOfAnswers < 15) { + return "negative"; + } else if (indexOfAnswers >= 15 && indexOfAnswers < 20) { + return "very negative"; + } } /* @@ -101,7 +144,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" From 38f548c6188f09c160b549b3efedd30bd46f112e Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 12:41:19 +0200 Subject: [PATCH 6/9] Update package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e7f2ffeb..1b4a385fc 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Exercises for JS1 Week 1", "license": "CC-BY-SA-4.0", "scripts": { - "test": "jest" + "test": "jest", + "extra-tests": "jest-extra" }, "repository": { "type": "git", From 2572a771eee3e2c9f8b6dae0daa44441b0fb5281 Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Sat, 2 Jul 2022 13:01:48 +0200 Subject: [PATCH 7/9] update --- extra/3-magic-8-ball.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 9d91b9f92..d9e7aca53 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -42,7 +42,7 @@ Outlook not so good. Very doubtful. */ -const matchers = require("jest-extended"); // adds additional matchers to Jest's default ones making it easy to test everything +const matchers = require("jest-extended"); expect.extend(matchers); const possibleAnswers = [ diff --git a/package.json b/package.json index 1b4a385fc..12cbbf957 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "CC-BY-SA-4.0", "scripts": { "test": "jest", - "extra-tests": "jest-extra" + "extra-tests": "jest" }, "repository": { "type": "git", From 5b128969c7762dec5d1a0970eacfea96d9ff58cc Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Tue, 12 Jul 2022 18:01:24 +0200 Subject: [PATCH 8/9] update --- exercises/B-hello-world/exercise.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b6c0f5f9f..7e5c7f75a 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1,11 +1,2 @@ -// console.log("Hello world"); -// console.log("Hello World. I am Kwanda"); - -function convertToBRL(price) { - amount = (price - (price * 1) / 100) * 5.7; - newAmount = amount.toFixed(2); - return parseFloat(newAmount); -} - -amount = convertToBRL(1.5); -console.log(parseFloat(amount)); +console.log("Hello world"); +console.log("Hello World. I am Kwanda"); From 45bbd19310e1939322399fb15f0854a79d8fb9cf Mon Sep 17 00:00:00 2001 From: Kwanda Silekwa Date: Thu, 14 Jul 2022 13:01:17 +0200 Subject: [PATCH 9/9] Update exercise.js --- exercises/B-hello-world/exercise.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index 7e5c7f75a..7fd340118 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1,2 +1,2 @@ console.log("Hello world"); -console.log("Hello World. I am Kwanda"); +console.log("Hello World. I am Kwanda Silekwa");