diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..6e7d6d8ef Binary files /dev/null and b/.DS_Store differ diff --git a/exercises/B-hello-world/README.md b/exercises/B-hello-world/README.md index 27282c4af..8c704fb43 100644 --- a/exercises/B-hello-world/README.md +++ b/exercises/B-hello-world/README.md @@ -7,7 +7,7 @@ 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 +- Change directory to this folder (`cd B-hello-world`) - 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..825b87424 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 learning to be a developer!"); +console.log("hello world, I am learning everyday"); diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..c2925e716 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `greeting` +const 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..d1e7dae3d 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `message` +const message = "This is a string"; +const 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..b0fc4909a 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` +const greetingStart = "Hello, my name is "; +const myName = "Harsheek"; + +const message = greetingStart + myName; + console.log(message); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..bd46b36ab 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,7 @@ // Start by creating a variable `message` -console.log(message); +const message = "Harsheek"; + +console.log( + `My name is ${message} and my name is ${message.length} characters long` +); diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..ee6dfe63f 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,7 @@ const name = " Daniel "; +const message = `My name is ${name.trim()} and my name is ${ + name.trim().length +} characters long`; + console.log(message); diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..0db141894 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,12 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` + +const numberOfStudents = 15; +const numberOfMentors = 8; + +console.log(`Number of students: ${numberOfStudents}`); + +console.log(`Number of mentors: ${numberOfMentors}`); + +console.log( + `Total number of students and mentors: ${numberOfStudents + numberOfMentors}` +); diff --git a/exercises/I-floats/exercise.js b/exercises/I-floats/exercise.js index a5bbcd852..0e03687c6 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,14 @@ var numberOfStudents = 15; var numberOfMentors = 8; + +console.log( + `Percentage students: ${Math.round( + (numberOfStudents / (numberOfMentors + numberOfStudents)) * 100 + )}%` +); + +console.log( + `Percentage mentors: ${Math.round( + (numberOfMentors / (numberOfMentors + numberOfStudents)) * 100 + )}%` +); diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..0fc4c3655 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,5 +1,6 @@ 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..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..dbd50454d 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..4eac6aba1 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,5 +1,9 @@ // 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..fb17432e1 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,5 +1,9 @@ // 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..2f28c42ab 100644 --- a/exercises/K-functions-parameters/exercise4.js +++ b/exercises/K-functions-parameters/exercise4.js @@ -1,5 +1,9 @@ // Declare your function first +function sumNumbers(a, b) { + return a + b; +} +let sum = sumNumbers(13, 124); // Call the function and assign to a variable `sum` console.log(sum); diff --git a/exercises/K-functions-parameters/exercise5.js b/exercises/K-functions-parameters/exercise5.js index 7c5bcd605..85cc9f135 100644 --- a/exercises/K-functions-parameters/exercise5.js +++ b/exercises/K-functions-parameters/exercise5.js @@ -1,5 +1,9 @@ // Declare your function here +function createLongGreeting(name, age) { + return `Hello, my name is ${name} and I'm ${age} years old`; +} + const greeting = createLongGreeting("Daniel", 30); console.log(greeting); diff --git a/exercises/L-functions-nested/exercise.js b/exercises/L-functions-nested/exercise.js index a5d377442..349155262 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -3,3 +3,19 @@ var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; + +function logShoutyGreeting(name) { + let uppercaseName = makeUppercase(name); + + return `HELLO ${uppercaseName}`; +} + +function makeUppercase(mentor) { + return mentor.toUpperCase(); +} + +console.log(logShoutyGreeting(mentor1)); +console.log(logShoutyGreeting(mentor2)); +console.log(logShoutyGreeting(mentor3)); +console.log(logShoutyGreeting(mentor4)); +console.log(logShoutyGreeting(mentor5)); diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..6e2bf219a 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,12 +17,14 @@ 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) { + return parseFloat((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. -To run the tests for just this one file, type `npm test -- --testPathPattern 1-currency-conversion` into your terminal +To run these tests type `npm run extraTo run the tests for just this one file, type `npm run extra-tests -- --testPathPattern 1-syntax-errors` into your terminal (Reminder: You must have run `npm install` one time before this will work!) */ diff --git a/extra/2-piping.js b/extra/2-piping.js index b4f8c4c1b..d0e08e555 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -6,8 +6,7 @@ - one that multiplies 2 numbers together - one that formats a number so it's returned as a string with a £ sign before it (e.g. 20 -> £20) - 2. Using the variable startingValue as input, perform the following operations using your functions all - on one line (assign the result to the variable badCode): + 2. Using the variable startingValue as input, perform the following operations using your functions all on one line (assign the result to the variable badCode): - add 10 to startingValue - multiply the result by 2 - format it @@ -16,31 +15,30 @@ 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(number) { + return `£${number}`; } -const startingValue = 2; +const startingValue = (2 + 10) * 2; // Why can this code be seen as bad practice? Comment your answer. -let badCode = +let badCode = format(startingValue); /* BETTER PRACTICE */ -let goodCode = - +let goodCode = format(multiply(add(2, 10), 2)); /* ======= 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 +To run these tests type `npm run extraTo run the tests for just this one file, type `npm run extra-tests -- --testPathPattern 2-piping` into your terminal (Reminder: You must have run `npm install` one time before this will work!) */ diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..ca999d9b7 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -13,7 +13,7 @@ and have different levels of positivity or negativity. Below are the possible answers: - + ## Very positive It is certain. It is decidedly so. @@ -43,10 +43,50 @@ Very doubtful. */ +// This should log "The ball has shaken!" +// and return the answer. +const veryPositive = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", +]; + +const positive = [ + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", +]; + +const negative = [ + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", +]; + +const veryNegative = [ + "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 allAnswers = [ + ...veryPositive, + ...positive, + ...negative, + ...veryNegative, + ]; + return allAnswers[Math.round(Math.random() * allAnswers.length)]; } /* @@ -55,11 +95,18 @@ function shakeBall() { - 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 + if (veryPositive.includes(answer)) { + return "very positive"; + } else if (positive.includes(answer)) { + return "positive"; + } else if (negative.includes(answer)) { + return "negative"; + } else { + return "very negative"; + } } /* @@ -68,7 +115,7 @@ function checkAnswer(answer) { 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 +To run these tests type `npm run extraTo run the tests for just this one file, type `npm run extra-tests -- --testPathPattern 3-magic-8-ball` into your terminal (Reminder: You must have run `npm install` one time before this will work!) ================================== */ @@ -101,7 +148,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" 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..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..f8907e7be 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,16 +1,19 @@ // Add comments to explain what this function does. You're meant to use Google! function getRandomNumber() { + //This function generates a random number between 0-1, multiplies it by 10 and returns the total return Math.random() * 10; } // Add comments to explain what this function does. You're meant to use Google! function combine2Words(word1, word2) { + //This function concats (joins) word1 and word2 return word1.concat(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..e187e28db 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 salesTax = calculateSalesTax(price); + return `£${salesTax.toFixed(2)}`; +} /* =================================================== @@ -30,17 +35,17 @@ To run the tests for just this one file, type `npm test -- --testPathPattern 4-t =================================================== */ -test("calculateSalesTax for £15", () => { - expect(calculateSalesTax(15)).toEqual(18); -}); +// test("calculateSalesTax for £15", () => { +// expect(calculateSalesTax(15)).toEqual(18); +// }); -test("calculateSalesTax for £17.50", () => { - expect(calculateSalesTax(17.5)).toEqual(21); -}); +// test("calculateSalesTax for £17.50", () => { +// expect(calculateSalesTax(17.5)).toEqual(21); +// }); -test("calculateSalesTax for £34", () => { - expect(calculateSalesTax(34)).toEqual(40.8); -}); +// test("calculateSalesTax for £34", () => { +// expect(calculateSalesTax(34)).toEqual(40.8); +// }); test("addTaxAndFormatCurrency for £15", () => { expect(addTaxAndFormatCurrency(15)).toEqual("£18.00");