diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..3f77b617e Binary files /dev/null and b/.DS_Store differ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..a5109f603 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["Andi", "Andriana"] +} diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b179ee953..1c809b876 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1 +1,7 @@ console.log("Hello world"); +console.log("Hello World. I just started learning JavaScript!"); + +//npm test -- --testPathPattern mandatory/1-syntax-errors.js -> run single test + +console.log(3); +console.log(Hello); diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..1fa7db4be 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); +console.log(greeting); +console.log(greeting); diff --git a/exercises/D-strings/exercise.js b/exercises/D-strings/exercise.js index 2cffa6a81..69fe59fc6 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,8 @@ // Start by creating a variable `message` - +const message = "Hello World. This is a string"; console.log(message); +console.log(typeof message); + +const pounds = 5; +console.log(pounds); +console.log(typeof pounds); diff --git a/exercises/E-strings-concatenation/exercise.js b/exercises/E-strings-concatenation/exercise.js index 2cffa6a81..fd34e8030 100644 --- a/exercises/E-strings-concatenation/exercise.js +++ b/exercises/E-strings-concatenation/exercise.js @@ -1,3 +1,8 @@ // Start by creating a variable `message` +let greetingStart = "Hello, my name is "; +let name = "Andriana"; +name = "Andi"; + +const message = greetingStart + name; console.log(message); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..c60b14ba4 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,15 @@ // Start by creating a variable `message` +let name = "Andriana"; +const nameLength = name.length; + +console.log(name); +console.log(nameLength); + +let nameLowerCase = name.toLowerCase(); + +console.log(nameLowerCase); + +const message = ` My name is ${name} and my name is ${nameLength} characters long. `; console.log(message); +console.log(message.trim()); diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..53fd77db6 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,7 @@ const name = " Daniel "; +const nameLength = name.length; + +const message = ` My name is ${name} and my name is ${nameLength} characters long. `; console.log(message); +console.log(message.trim()); diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..68c253289 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,7 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` +let numberOfStudents = 15; +let numberOfMentors = 8; + +const total = numberOfMentors + numberOfStudents; + +console.log(total); diff --git a/exercises/I-floats/exercise.js b/exercises/I-floats/exercise.js index a5bbcd852..55c1ddae9 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,16 @@ var numberOfStudents = 15; var numberOfMentors = 8; + +const totalNumber = numberOfMentors + numberOfStudents; + +let percentageStudents = (numberOfStudents / totalNumber) * 100; +const roughPercentageStudents = Math.round(percentageStudents); + +console.log(percentageStudents); +console.log(roughPercentageStudents); + +let percentageMentors = (numberOfMentors / totalNumber) * 100; +const roughPercentageMentors = Math.round(percentageMentors); + +console.log(percentageMentors); +console.log(roughPercentageMentors); diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..fb3832294 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,7 +1,19 @@ function halve(number) { - // complete the function here + return number / 2; } var result = halve(12); console.log(result); + +result = halve(10); + +console.log(result); + +result = halve(8); + +console.log(result); + +result = halve(6); + +console.log(result); diff --git a/exercises/J-functions/exercise2.js b/exercises/J-functions/exercise2.js index 82ef5e780..457e947af 100644 --- a/exercises/J-functions/exercise2.js +++ b/exercises/J-functions/exercise2.js @@ -1,7 +1,19 @@ function triple(number) { - // complete function here + return number * 3; } var result = triple(12); console.log(result); + +result = triple(10); + +console.log(result); + +result = triple(8); + +console.log(result); + +result = triple(6); + +console.log(result); diff --git a/exercises/K-functions-parameters/exercise.js b/exercises/K-functions-parameters/exercise.js index 8d5db5e69..ed88cb68b 100644 --- a/exercises/K-functions-parameters/exercise.js +++ b/exercises/K-functions-parameters/exercise.js @@ -1,9 +1,17 @@ // Complete the function so that it takes input parameters -function multiply() { - // Calculate the result of the function and return it +function multiply(a, b) { + return a * b; } // Assign the result of calling the function the variable `result` var result = multiply(3, 4); console.log(result); + +result = multiply(2, 2); + +console.log(result); + +result = multiply(10, 10); + +console.log(result); diff --git a/exercises/K-functions-parameters/exercise2.js b/exercises/K-functions-parameters/exercise2.js index db7a8904b..4a5a35dda 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,5 +1,19 @@ -// Declare your function first +function divide(a, b) { + return a / b; +} var result = divide(3, 4); console.log(result); + +result = divide(10, 2); + +console.log(result); + +result = divide(72, 3); + +console.log(result); + +result = divide(1, 2); + +console.log(result); diff --git a/exercises/K-functions-parameters/exercise3.js b/exercises/K-functions-parameters/exercise3.js index 537e9f4ec..fd7f45539 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,5 +1,19 @@ -// Write your function here +function createGreeting(name) { + return (message = `Hello, my name is ${name}`); +} var greeting = createGreeting("Daniel"); console.log(greeting); + +greeting = createGreeting("Day"); + +console.log(greeting); + +greeting = createGreeting("Lewis"); + +console.log(greeting); + +greeting = createGreeting("Junior"); + +console.log(greeting); diff --git a/exercises/K-functions-parameters/exercise4.js b/exercises/K-functions-parameters/exercise4.js index 7ab44589e..b9f88f298 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..e57bfbc87 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(name, age) { + return (message = `Hello, my name is ${name} and I'm ${age} 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..31fb8935a 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -3,3 +3,25 @@ var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; + +// ```js +// var name = "Daniel"; +// var nameLowerCase = name.toLowerCase(); + +// console.log(nameLowerCase); // "daniel" +// ```; + +function nameUpperCase(name) { + return name.toUpperCase(); +} + +function shoutyGreeting(name) { + let upperCaseName = nameUpperCase(name); + return `HELLO ${upperCaseName}`; +} + +console.log(shoutyGreeting(mentor1)); +console.log(shoutyGreeting(mentor2)); +console.log(shoutyGreeting(mentor3)); +console.log(shoutyGreeting(mentor4)); +console.log(shoutyGreeting(mentor5)); diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..8db7ff281 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(price) { + let convertGbpToUsd = price * 1.4; + return convertGbpToUsd; +} /* CURRENCY CONVERSION @@ -15,7 +18,10 @@ 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 convertGbpToBrl = (price * 0.99 * 5.7).toFixed(2); + return Number(convertGbpToBrl); +} /* ======= 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..2b6d9145c 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,26 +16,26 @@ the final result to the variable goodCode */ -function add() { - +function add(num1, num2) { + return num1 + num2; } -function multiply() { - +function multiply(number1, number2) { + return number1 * number2; } -function format() { - +function format(price) { + return `£${price}`; } 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)); //This formula for this variable is too complicated and long to read or figure out. /* BETTER PRACTICE */ -let goodCode = +let goodCode = format((startingValue + 10) * 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/3-magic-8-ball.js b/extra/3-magic-8-ball.js deleted file mode 100644 index 46f65f928..000000000 --- a/extra/3-magic-8-ball.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - - Let's peer into the future using a Magic 8 Ball! - https://en.wikipedia.org/wiki/Magic_8-Ball - - There are a few steps to being able view the future though: - * Ask a question - * Shake the ball - * Get an answer - * Decide if it's positive or negative - - The question can be anything, but the answers are fixed, - and have different levels of positivity or negativity. - - Below are the possible answers: - - ## 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 -} - -/* - This function should say whether the answer it is given is - - very positive - - positive - - negative - - very negative - - 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 -} - -/* -================================== -======= TESTS - DO NOT MODIFY ===== - -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 3-magic-8-ball` into your terminal -(Reminder: You must have run `npm install` one time before this will work!) -================================== -*/ - -test("whole magic 8 ball sequence", () => { - const consoleLogSpy = jest.spyOn(global.console, "log"); - const answer = shakeBall(); - - expect(typeof answer).toEqual("string"); - - expect(consoleLogSpy).toHaveBeenCalledTimes(1); - expect(consoleLogSpy).toHaveBeenLastCalledWith("The ball has shaken!"); - - expect(checkAnswer(answer)).toBeOneOf([ - "very positive", - "positive", - "negative", - "very negative", - ]); -}); - -test("magic 8 ball returns different values each time", () => { - const seenAnswers = new Set(); - for (let i = 0; i < 10; ++i) { - seenAnswers.add(shakeBall()); - } - if (seenAnswers.size < 2) { - throw Error( - "Expected to get different random answers each time shakeBall was called, but always got the same one" - ); - } - - 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" - ); - } -}); - -test("checkAnswer works for `It is decidedly so.`", () => { - expect(checkAnswer("It is decidedly so.")).toEqual("very positive"); -}); - -test("checkAnswer works for `My reply is no.`", () => { - expect(checkAnswer("My reply is no.")).toEqual("very negative"); -}); diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index a10cc9ac2..566b465d0 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; + 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..6f1b1d56b 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,16 @@ // 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(); + let wordLength = word.length; + return wordLength; } 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..b3e306216 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -2,13 +2,17 @@ function getRandomNumber() { return Math.random() * 10; } +//The Math.random() method returns a random number from 0 (inclusive) up to but not including 1 (exclusive). // 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 joins two or more strings, it does not change the existing strings but returns a new string. + function concatenate(firstWord, secondWord, thirdWord) { + return `${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. } diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..16584e30d 100644 --- a/mandatory/4-tax.js +++ b/mandatory/4-tax.js @@ -5,7 +5,11 @@ Sales tax is 20% of the price of the product. */ -function calculateSalesTax() {} +function calculateSalesTax(number) { + let salesAmount = number * 0.2; + let newSalesAmount = salesAmount + number; + return newSalesAmount; +} /* CURRENCY FORMATTING @@ -17,7 +21,12 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(number) { + let salesTaxPlusAmount = calculateSalesTax(number); + let newSalesAmount = salesTaxPlusAmount.toFixed(2); + let totalAmount = `£${newSalesAmount}`; + return totalAmount; +} /* ===================================================