diff --git a/exercises/B-hello-world/README.md b/exercises/B-hello-world/README.md index 27282c4af..c9553e9fe 100644 --- a/exercises/B-hello-world/README.md +++ b/exercises/B-hello-world/README.md @@ -5,9 +5,7 @@ We'll do this in JavaScript, using something called `console.log()`. Inside of `exercise.js` there's a line of code that will print "Hello world!". ### 1. Run the program - -- Open a terminal window -- Change directory to this folder (`cd exercises/B-hello-world`) - assuming you're at the project root +('cd exercises/B-hello-world`) - assuming you're at the project root - Run the program using node (`node exercise.js`) ### 2. Experiment diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b179ee953..06559e909 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1 +1,4 @@ -console.log("Hello world"); +console.log('Hello world'); +console.log("hello there!!!"); +console.log("finally working!"); +console.log("not working"); diff --git a/exercises/C-variables/README.md b/exercises/C-variables/README.md index 40859b3a8..6f9831e23 100644 --- a/exercises/C-variables/README.md +++ b/exercises/C-variables/README.md @@ -15,7 +15,7 @@ The program above will print "Hello world" to the console. Notice how it uses th - Add a variable `greeting` to exercise.js (make sure it comes _before_ the console.log) - Print your `greeting` to the console 3 times -> Remember: to run this exercise you must change directory to the `C-variables`. If you already have a terminal window open for the previous exercise you can do this by running the command `cd ../C-variables`. +> Remember: to run this exercise you must change directory to the `C-variables`. If you already have a terminal window open for the previous exercise you can do this by running the command ``. ## Expected result diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..05d1639e5 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,3 @@ // Start by creating a variable `greeting` - -console.log(greeting); +let greeting = "Isn't good day at all!" +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..4c13b2cc5 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `message` +var message = "This is a string string" -console.log(message); +var messageType = typeof message; + +console.log(messageType); diff --git a/exercises/E-strings-concatenation/exercise.js b/exercises/E-strings-concatenation/exercise.js index 2cffa6a81..44b403783 100644 --- a/exercises/E-strings-concatenation/exercise.js +++ b/exercises/E-strings-concatenation/exercise.js @@ -1,3 +1,5 @@ // Start by creating a variable `message` - +var greeting = "Good day, my name is "; +var myName = "Catalina"; +var message = greeting + myName; console.log(message); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..4a105a07a 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,8 @@ // Start by creating a variable `message` +var message1 = "My name is Catalina-Alexandra and my name is "; +var message2 = " characters long"; +var myName = "Catalina-Alexandra"; +var nameLength = myName.length; +var message = message1 + nameLength + message2; console.log(message); diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..8ecbcd84d 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,11 @@ -const name = " Daniel "; +const myName = " Catalina-Alexandra "; +const trimmed = myName.trim(); +var message1 = "My name is "; +var message2 = " and my name is "; +var message3 = " characters long"; + +var nameLength = myName.length; +var message = message1 + trimmed + message2 + nameLength + message3; + console.log(message); diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..e090fb71c 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,7 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` +var numberOfStudents = 30 + 2; +var numberOfMentors = 8 + 1; +var total = numberOfStudents + numberOfMentors; +console.log("Number of students: " + numberOfStudents); +console.log("Number of mentors: " + 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..3b242adf9 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,9 @@ var numberOfStudents = 15; var numberOfMentors = 8; +var proNrOfStudents = 1500 / 23; +var proNrOfMentors = 800 / 23; +var proNrOfStudentsRound = Math.round(proNrOfStudents); +var proNrOfMentorsRound = Math.round(proNrOfMentors); + +console.log("Procent of students: " + proNrOfStudentsRound + "%"); +console.log("Procent of mentors: " + proNrOfMentorsRound + "%"); diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..e8e791318 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,7 +1,8 @@ function halve(number) { // complete the function here + return number / 2; } -var result = halve(12); +var result = halve(200); console.log(result); diff --git a/exercises/J-functions/exercise2.js b/exercises/J-functions/exercise2.js index 82ef5e780..29b2e6e13 100644 --- a/exercises/J-functions/exercise2.js +++ b/exercises/J-functions/exercise2.js @@ -1,7 +1,8 @@ function triple(number) { // complete function here + return number * 3; } -var result = triple(12); +var result = triple(7); console.log(result); diff --git a/exercises/K-functions-parameters/exercise.js b/exercises/K-functions-parameters/exercise.js index 8d5db5e69..a4eed9d76 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(num1, num2) { // Calculate the result of the function and return it + 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..4805ef7dc 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,4 +1,7 @@ // 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..8644dc78b 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,5 +1,8 @@ // Write your function here +function createGreeting(myName) { + return "Hello, my name is " + myName; +} -var greeting = createGreeting("Daniel"); +var greeting = createGreeting("Catalina"); console.log(greeting); diff --git a/exercises/K-functions-parameters/exercise4.js b/exercises/K-functions-parameters/exercise4.js index 7ab44589e..e43f0852a 100644 --- a/exercises/K-functions-parameters/exercise4.js +++ b/exercises/K-functions-parameters/exercise4.js @@ -1,5 +1,8 @@ // Declare your function first +function addition(nr1, nr2) { + return nr1 + nr2; +} // Call the function and assign to a variable `sum` - +var sum = addition(13, 124); console.log(sum); diff --git a/exercises/K-functions-parameters/exercise5.js b/exercises/K-functions-parameters/exercise5.js index 7c5bcd605..b7534db5c 100644 --- a/exercises/K-functions-parameters/exercise5.js +++ b/exercises/K-functions-parameters/exercise5.js @@ -1,5 +1,8 @@ // Declare your function here +function createLongGreeting(myName, age) { + return "Hello, my name is " + myName + " and I'm " + age + " years old." +} -const greeting = createLongGreeting("Daniel", 30); +const greeting = createLongGreeting("Catalina", 47); console.log(greeting); diff --git a/exercises/L-functions-nested/exercise.js b/exercises/L-functions-nested/exercise.js index a5d377442..1493c896e 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -3,3 +3,18 @@ var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; + +function upCase(name) { + return name.toUpperCase(); +} +function greeting(name) { + let shouty = upCase(name); + let message = "GOOD DAY " + shouty; + return message; +} +console.log(greeting(mentor1)); +console.log(greeting(mentor2)); +console.log(greeting(mentor3)); +console.log(greeting(mentor4)); +console.log(greeting(mentor5)); + diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..2dea27760 100644 --- a/extra/1-currency-conversion.js +++ b/extra/1-currency-conversion.js @@ -5,8 +5,11 @@ Write a function that converts a price to USD (exchange rate is 1.4 $ to £) */ -function convertToUSD() {} +function convertToUSD(pound) { + return pound * 1.4; +} +console.log(convertToUSD(32)) /* CURRENCY CONVERSION =================== @@ -15,8 +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(pound) { + return pound * 5.7; +} +console.log(convertToBRL(30)); /* ======= 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..d8a17d061 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,58 +16,62 @@ the final result to the variable goodCode */ -function add() { +// function add(2, 4) { +// return 2 + 4; -} +// } -function multiply() { +// function multiply(5, 6) { +// return 5 * 6; -} +// } -function format() { +// function format($, 20) { +// return "$" + "20" -} +// } -const startingValue = 2; +// const startingValue = 2; -// Why can this code be seen as bad practice? Comment your answer. -let badCode = +// // Why can this code be seen as bad practice? Comment your answer. +// let badCode = -/* BETTER PRACTICE */ +// /* BETTER PRACTICE */ -let goodCode = -/* ======= TESTS - DO NOT MODIFY ===== -There are some Tests in this file that will help you work out if your code is working. +// let goodCode = -To run the tests for just this one file, type `npm test -- --testPathPattern 2-piping` into your terminal -(Reminder: You must have run `npm install` one time before this will work!) -*/ +// /* ======= 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 2-piping` into your terminal +// (Reminder: You must have run `npm install` one time before this will work!) +// */ -test("add function - case 1 works", () => { - expect(add(1, 3)).toEqual(4); -}); +// test("add function - case 1 works", () => { +// expect(add(1, 3)).toEqual(4); +// }); -test("add function - case 2 works", () => { - expect(add(2.4, 5)).toEqual(7.4); -}); +// test("add function - case 2 works", () => { +// expect(add(2.4, 5)).toEqual(7.4); +// }); -test("multiply function works", () => { - expect(multiply(2, 3)).toEqual(6); -}); +// test("multiply function works", () => { +// expect(multiply(2, 3)).toEqual(6); +// }); -test("format function works for whole number", () => { - expect(format(16)).toEqual("£16"); -}); +// test("format function works for whole number", () => { +// expect(format(16)).toEqual("£16"); +// }); -test("format function works for decimal number", () => { - expect(format(10.1)).toEqual("£10.1"); -}); +// test("format function works for decimal number", () => { +// expect(format(10.1)).toEqual("£10.1"); +// }); -test("badCode variable correctly assigned", () => { - expect(badCode).toEqual("£24"); -}); +// test("badCode variable correctly assigned", () => { +// expect(badCode).toEqual("£24"); +// }); -test("goodCode variable correctly assigned", () => { - expect(goodCode).toEqual("£24"); -}); +// test("goodCode variable correctly assigned", () => { +// expect(goodCode).toEqual("£24"); +// }); diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..ea835f8ad 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -1,118 +1,119 @@ -/** - - 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"); -}); +// /** + +// 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..578aa9871 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -1,17 +1,21 @@ // There are syntax errors in this code - can you fix it to pass the tests? -function addNumbers(a b c) { - return a + b + c; +function addNumbers(a, b, c) { + let d = a + b + c; + return d; } -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`; +} +console.log(introduceMe('Catalina', 47)); function getTotal(a, b) { - total = a ++ b; + let toEqual = a + b; + return `The total is ${toEqual}`; - return "The total is total"; } +console.log(getTotal()); /* =================================================== diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index 9cca7603b..bff42c8ee 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,18 @@ // 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..cc5c066e7 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,16 +1,22 @@ -// Add comments to explain what this function does. You're meant to use Google! +// Add comments to explain what this function does. You're meant to use Google! Math.random() method returns a random number from zero (inclusive)up but not including 1. function getRandomNumber() { - return Math.random() * 10; + return (Math.random() * 10); } -// Add comments to explain what this function does. You're meant to use Google! -function combine2Words(word1, word2) { - return word1.concat(word2); +// Add comments to explain what this function does. You're meant to use Google!Concat()method joins two or more strings. +function combine2Words(word1, word2, word3) { + return word1 + word2 + word3; } 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}`; +} +function wordsNr(word1, word2, nr) { + + return `${word1} ${word2} ${nr}`; } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..d8f06eead 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) { + return price + (price * 0.2); + +} /* CURRENCY FORMATTING @@ -17,7 +20,9 @@ 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 * 0.2).toFixed(2); +} /* ===================================================