From 55cf315b7087b3ce726025ad1ff7ad017361c3de Mon Sep 17 00:00:00 2001 From: Shayan Mahnam <95313895+Shayanma94@users.noreply.github.com> Date: Sun, 20 Nov 2022 14:32:23 +0000 Subject: [PATCH 1/4] mandatory completed --- mandatory/1-syntax-errors.js | 11 ++++++----- mandatory/2-logic-error.js | 9 +++++---- mandatory/3-function-output.js | 6 ++++++ mandatory/4-tax.js | 11 +++++++++-- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index a10cc9ac2..d5620aadc 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 " + 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; + let 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..411c02706 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,17 @@ // 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..4b2ceb769 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -3,14 +3,20 @@ function getRandomNumber() { return Math.random() * 10; } +/* The Math.random() function returns a floating-point, pseudo-random number that's greater than or equal to 0 and less than 1, with approximately uniform distribution over that range — which you can then scale to your desired range. The implementation selects the initial seed to the random number generation algorithm; it cannot be chosen or reset by the user. */ + // Add comments to explain what this function does. You're meant to use Google! function combine2Words(word1, word2) { return word1.concat(word2); } +/* The concat() method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array. */ + 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).concat(thirdWord); + return `${firstWord} ${secondWord} ${thirdWord}`; } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..e0ab3bac9 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) { + let tax = price + (price * 20) / 100; + return tax; +} /* 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) { + return `£${(price + (price * 20) / 100).toFixed(2)}`; +} + + /* =================================================== From 5aa8ea8a22bfff2ef81599dc34650543f300521f Mon Sep 17 00:00:00 2001 From: Shayan Mahnam <95313895+Shayanma94@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:30:04 +0000 Subject: [PATCH 2/4] exercises completed --- exercises/B-hello-world/exercise.js | 4 +++- exercises/C-variables/exercise.js | 4 +++- exercises/D-strings/exercise.js | 4 +++- exercises/E-strings-concatenation/exercise.js | 5 ++++- exercises/F-strings-methods/exercise.js | 10 +++++++++- exercises/F-strings-methods/exercise2.js | 2 +- exercises/G-numbers/exercise.js | 12 ++++++++++++ exercises/I-floats/exercise.js | 8 ++++++++ exercises/J-functions/exercise.js | 7 +++++++ exercises/J-functions/exercise2.js | 1 + exercises/K-functions-parameters/exercise.js | 3 ++- 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 | 6 ++++-- exercises/L-functions-nested/exercise.js | 17 +++++++++++++++++ 16 files changed, 84 insertions(+), 13 deletions(-) diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b179ee953..e26655452 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1 +1,3 @@ -console.log("Hello world"); +console.log("Hello world." + " " + "I just started learning JavaScript!"); +// console.log(" " + "I just started learning JavaScript!"); +console.log(7); diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..6a1175bba 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,5 @@ // Start by creating a variable `greeting` - +var greeting = "Hello world"; console.log(greeting); +console.log(greeting); +console.log(greeting); \ No newline at end of file diff --git a/exercises/D-strings/exercise.js b/exercises/D-strings/exercise.js index 2cffa6a81..9a78510f5 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,5 @@ // Start by creating a variable `message` - +var message = "This is a string"; +var messageType = typeof message; console.log(message); +console.log(messageType); diff --git a/exercises/E-strings-concatenation/exercise.js b/exercises/E-strings-concatenation/exercise.js index 2cffa6a81..2a0c9e95b 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` +var greetingStart = "Hello, my name is "; +var name = "Shayan"; -console.log(message); +var greeting = greetingStart + name; +console.log(greeting); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..a5de55a80 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,11 @@ // Start by creating a variable `message` +var name = "Shayan"; +var nameLength = name.length; -console.log(message); +console.log(nameLength); + +var name = "Shayan"; +var nameLowerCase = name.toLowerCase(); + +console.log(nameLowerCase); +console.log(nameLowerCase.trim()); \ No newline at end of file diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..f8f1c2b6b 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,3 @@ const name = " Daniel "; -console.log(message); +console.log(name.trim()); diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..9638c1859 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,13 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` +var sum = 10 + 2; // 12 +var product = 10 * 2; // 20 +var quotient = 10 / 2; // 5 +var difference = 10 - 2; // 8 + +const numberOfStudents = 23; +const numberOfMentors = 3; +const total = numberOfMentors + numberOfStudents; +console.log("number of students: " + numberOfStudents); +console.log("number of mentor: " + numberOfMentors); + +console.log("Total number of students and mentors: " + total); \ No newline at end of file diff --git a/exercises/I-floats/exercise.js b/exercises/I-floats/exercise.js index a5bbcd852..48d1c766e 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,10 @@ var numberOfStudents = 15; var numberOfMentors = 8; +var preciseAge = 30.612437; +var roughAge = Math.round(preciseAge); // 30 +let percentageOfStudents = Math.round((numberOfStudents * 100) / (numberOfMentors + numberOfStudents)); +let percentageOfMentors = Math.round((numberOfMentors * 100) / (numberOfMentors + numberOfStudents) +); + + console.log("Percentage mentors: " + percentageOfMentors + "%"); + console.log("Percentage students: " + percentageOfStudents + "%"); \ No newline at end of file diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..9b8a6922e 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,7 +1,14 @@ function halve(number) { // complete the function here + return number * 0.5; } var result = halve(12); +// var result = halve(33); +// var result = halve(7); +// var result = halve(80); + + + console.log(result); diff --git a/exercises/J-functions/exercise2.js b/exercises/J-functions/exercise2.js index 82ef5e780..468d45596 100644 --- a/exercises/J-functions/exercise2.js +++ b/exercises/J-functions/exercise2.js @@ -1,5 +1,6 @@ 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..6cc01c239 100644 --- a/exercises/K-functions-parameters/exercise.js +++ b/exercises/K-functions-parameters/exercise.js @@ -1,6 +1,7 @@ // Complete the function so that it takes input parameters -function multiply() { +function multiply(a, b) { // Calculate the result of the function and return it + return a + b; } // 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..b42e1f3fa 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,5 +1,7 @@ // Declare your function first - +function divide(a, b){ + return a / b; +} var result = divide(3, 4); console.log(result); diff --git a/exercises/K-functions-parameters/exercise3.js b/exercises/K-functions-parameters/exercise3.js index 537e9f4ec..0e2e92dd3 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,5 +1,7 @@ // Write your function here - +function createGreeting(name) { + return "Hello. my name is " + name; +} var greeting = createGreeting("Daniel"); console.log(greeting); diff --git a/exercises/K-functions-parameters/exercise4.js b/exercises/K-functions-parameters/exercise4.js index 7ab44589e..f312733b2 100644 --- a/exercises/K-functions-parameters/exercise4.js +++ b/exercises/K-functions-parameters/exercise4.js @@ -1,5 +1,7 @@ // Declare your function first - +function add(a, b) { + return a + b; +} // Call the function and assign to a variable `sum` - +let sum = add(13, 124); console.log(sum); diff --git a/exercises/K-functions-parameters/exercise5.js b/exercises/K-functions-parameters/exercise5.js index 7c5bcd605..f2476274f 100644 --- a/exercises/K-functions-parameters/exercise5.js +++ b/exercises/K-functions-parameters/exercise5.js @@ -1,5 +1,7 @@ // Declare your function here - -const greeting = createLongGreeting("Daniel", 30); +function createLongGreeting(name, age){ + return `Hello, my name is ${name} and I'm ${age} years old`; +} +const greeting = createLongGreeting("Shayan", 28); console.log(greeting); diff --git a/exercises/L-functions-nested/exercise.js b/exercises/L-functions-nested/exercise.js index a5d377442..cbe1de42d 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -3,3 +3,20 @@ var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; +function nameUppercase(name){ + return name.toUpperCase(); +} + +function greetingMentors(name) { + return `HELLO lovely ${nameUppercase(name)}! welcome to my js test!`; +} + +function greetingMentorsShouty(name){ + console.log(greetingMentors(name)); +} + +greetingMentorsShouty(mentor1); +greetingMentorsShouty(mentor2); +greetingMentorsShouty(mentor3); +greetingMentorsShouty(mentor4); +greetingMentorsShouty(mentor5); \ No newline at end of file From dad89421793bbe8129a7b707c93f8f1a2ccca235 Mon Sep 17 00:00:00 2001 From: Shayan Mahnam <95313895+Shayanma94@users.noreply.github.com> Date: Sun, 20 Nov 2022 18:21:59 +0000 Subject: [PATCH 3/4] two extra completed --- extra/1-currency-conversion.js | 17 +++++++++++++++-- extra/2-piping.js | 18 ++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..a5a3454cf 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,18 @@ 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 fee = (price * 99) / 100; +// let converted = fee * 5.7; +// return converted.toFixed(2); +// } +function convertToBRL(price) { + return Number((price * 0.99 * 5.7).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..29b9eab04 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(numberOne, numberTwo) { + return numberOne + numberTwo; } -function multiply() { - +function multiply(numberOne, numberTwo) { + return numberOne * numberTwo; } -function format() { - +function format(number) { + return `£${number}` } 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)); +// kind of hard to read /* BETTER PRACTICE */ -let goodCode = +let goodCode = format(multiply(add(startingValue, 10), 2)); +// couldn't find easier way to write it /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. From d259e3a79b4156859d8d418c8010a0ba208ebdd9 Mon Sep 17 00:00:00 2001 From: Shayan Mahnam <95313895+Shayanma94@users.noreply.github.com> Date: Tue, 22 Nov 2022 11:26:53 +0000 Subject: [PATCH 4/4] 8 ball fixed --- extra/3-magic-8-ball.js | 74 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..d539e9728 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -42,11 +42,54 @@ Outlook not so good. Very doubtful. */ - +const { toBeOneOf } = require("jest-extended"); + +const veryPositiveAnswers = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", +]; + +const positiveAnswers = [ + " As I see it, yes.", + "Most likely.", + " Outlook good.", + "Yes.", + " Signs point to yes.", +]; + +const negativeAnswers = [ + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", +]; +const veryNegativeAnswers = [ + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", +]; + +const listsOfAnswers = [ + veryPositiveAnswers, + positiveAnswers, + negativeAnswers, + veryNegativeAnswers, +]; + +var answer; // This should log "The ball has shaken!" // and return the answer. function shakeBall() { //Write your code in here + console.log("The ball has shaken!"); + answer = returnRandomAnswer(); + return answer; } /* @@ -58,8 +101,33 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ -function checkAnswer(answer) { - //Write your code in here +function returnRandomAnswer() { + let list = listsOfAnswers[getRandomInt(4)]; + let answer = list[getRandomInt(5)]; + return answer; +} + +function getRandomInt(max) { + return Math.floor(Math.random() * max); +} +function checkAnswer(string) { + for (let i = 0; i < 4; i++) { + let list = listsOfAnswers[i]; + for (let j = 0; j < 5; j++) { + let answerFromList = list[j]; + if (answerFromList === string) { + if (i === 0) { + return "very positive"; + } else if (i === 1) { + return "positive"; + } else if (i === 2) { + return "negative"; + } else { + return "very negative"; + } + } + } + } } /*