From 9da601e78aef48c0e1bca28ec7c2d1629f64009b Mon Sep 17 00:00:00 2001 From: cyf Date: Fri, 7 Mar 2025 13:03:18 +0000 Subject: [PATCH 1/5] key-implement done --- Sprint-3/1-key-implement/1-get-angle-type.js | 10 +++++ .../1-key-implement/2-is-proper-fraction.js | 15 +++++++- Sprint-3/1-key-implement/3-get-card-value.js | 38 ++++++++++++++++++- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/Sprint-3/1-key-implement/1-get-angle-type.js b/Sprint-3/1-key-implement/1-get-angle-type.js index 08d1f0cba..00707e65e 100644 --- a/Sprint-3/1-key-implement/1-get-angle-type.js +++ b/Sprint-3/1-key-implement/1-get-angle-type.js @@ -10,6 +10,11 @@ function getAngleType(angle) { if (angle === 90) return "Right angle"; // read to the end, complete line 36, then pass your test here + else if (angle < 90) return "Acute angle"; + else if (angle > 90 && angle < 180) return "Obtuse angle"; + else if (angle === 180) return "Straight angle"; + else if (angle > 180 && angle < 360) return "Reflex angle"; + } // we're going to use this helper function to make our assertions easier to read @@ -43,14 +48,19 @@ assertEquals(acute, "Acute angle"); // When the angle is greater than 90 degrees and less than 180 degrees, // Then the function should return "Obtuse angle" const obtuse = getAngleType(120); +assertEquals(obtuse, "Obtuse angle") // ====> write your test here, and then add a line to pass the test in the function above // Case 4: Identify Straight Angles: // When the angle is exactly 180 degrees, // Then the function should return "Straight angle" +const straight = getAngleType(180); +assertEquals(straight, 'Straight angle') // ====> write your test here, and then add a line to pass the test in the function above // Case 5: Identify Reflex Angles: // When the angle is greater than 180 degrees and less than 360 degrees, // Then the function should return "Reflex angle" +const reflex = getAngleType(181) +assertEquals(reflex, 'Reflex angle') // ====> write your test here, and then add a line to pass the test in the function above \ No newline at end of file diff --git a/Sprint-3/1-key-implement/2-is-proper-fraction.js b/Sprint-3/1-key-implement/2-is-proper-fraction.js index 91583e941..a462176ec 100644 --- a/Sprint-3/1-key-implement/2-is-proper-fraction.js +++ b/Sprint-3/1-key-implement/2-is-proper-fraction.js @@ -8,8 +8,12 @@ // write one test at a time, and make it pass, build your solution up methodically function isProperFraction(numerator, denominator) { - if (numerator < denominator) return true; + //check if numerator is negative or positive + numerator = numerator < 0 ? Math.abs(numerator) : numerator; + let result = numerator < denominator ? true : false; + return result; } +//I understand this can be shorter as well return numerator < denominator without putting in variable, this is because it's easier for me // here's our helper again function assertEquals(actualOutput, targetOutput) { @@ -40,6 +44,7 @@ assertEquals(improperFraction, false); // target output: true // Explanation: The fraction -4/7 is a proper fraction because the absolute value of the numerator (4) is less than the denominator (7). The function should return true. const negativeFraction = isProperFraction(-4, 7); +assertEquals(negativeFraction, true); // ====> complete with your assertion // Equal Numerator and Denominator check: @@ -47,7 +52,15 @@ const negativeFraction = isProperFraction(-4, 7); // target output: false // Explanation: The fraction 3/3 is not a proper fraction because the numerator is equal to the denominator. The function should return false. const equalFraction = isProperFraction(3, 3); +assertEquals(equalFraction, false) // ====> complete with your assertion // Stretch: // What other scenarios could you test for? + +// Zero Numerator and Denominator check: +// Input: numerator = 0, denominator = 4 +// target output: false +// Explanation: The fraction 0/3 is not a proper fraction because the numerator is 0. The function should return false. +const zeroFraction = isProperFraction(0, 3); +assertEquals(equalFraction, false) \ No newline at end of file diff --git a/Sprint-3/1-key-implement/3-get-card-value.js b/Sprint-3/1-key-implement/3-get-card-value.js index aa1cc9f90..dc88c89ab 100644 --- a/Sprint-3/1-key-implement/3-get-card-value.js +++ b/Sprint-3/1-key-implement/3-get-card-value.js @@ -7,10 +7,37 @@ // complete the rest of the tests and cases // write one test at a time, and make it pass, build your solution up methodically // just make one change at a time -- don't rush -- programmers are deep and careful thinkers +// function getCardValue(card) { +// if (card === "A") return 11; +// }// switch (rank) { +// case "A": +// return 11; +// break; +// } + function getCardValue(card) { - if (rank === "A") return 11; + if (card.slice(0, 2) == '10') { + return 10; + } + let rank = card.length > 2 ? card.slice(0,2) : card[0]; + + if (rank === 'A') { + return 11; + } else if (rank >= 2 && rank <= 9) { + return parseInt(rank); + } else if (rank === 'J' || rank === 'Q' || rank === 'K') { + return 10; + } else + //check if not valid + // const allCards = ['A', 'K', 'Q', 'J', '10', '9', '8', '7', '6', '5', '4', '3', '2']; + // if (!allCards.includes(card)) + // here i was getting errors when this condition was at the beginning, so instead I implemented if input oes not match then it is invalid + return "Invalid card rank" + } + + // You need to write assertions for your function to check it works in different cases // we're going to use this helper function to make our assertions easier to read // if the actual output matches the target output, the test will pass @@ -33,19 +60,26 @@ assertEquals(aceofSpades, 11); // When the function is called with such a card, // Then it should return the numeric value corresponding to the rank (e.g., "5" should return 5). const fiveofHearts = getCardValue("5♥"); +assertEquals(fiveofHearts, 5); // ====> write your test here, and then add a line to pass the test in the function above // Handle Face Cards (J, Q, K): // Given a card with a rank of "10," "J," "Q," or "K", // When the function is called with such a card, // Then it should return the value 10, as these cards are worth 10 points each in blackjack. +const tenofSpades = getCardValue("10♥"); +assertEquals(tenofSpades, 10); // Handle Ace (A): // Given a card with a rank of "A", // When the function is called with an Ace, // Then it should, by default, assume the Ace is worth 11 points, which is a common rule in blackjack. +const aceofSpadesS = getCardValue("A"); +assertEquals(aceofSpades, 11); // Handle Invalid Cards: // Given a card with an invalid rank (neither a number nor a recognized face card), // When the function is called with such a card, -// Then it should throw an error indicating "Invalid card rank." +// // Then it should throw an error indicating "Invalid card rank." +const invalid = getCardValue("c"); +assertEquals(invalid, 'Invalid card rank'); From 13189150f3aec8a0591005e4c2f9341bf94fa2fd Mon Sep 17 00:00:00 2001 From: cyf Date: Fri, 7 Mar 2025 14:11:48 +0000 Subject: [PATCH 2/5] rewrte-done --- .../2-mandatory-rewrite/1-get-angle-type.js | 12 +++------ .../1-get-angle-type.test.js | 27 +++++++++---------- .../2-is-proper-fraction.js | 6 +++-- .../2-is-proper-fraction.test.js | 9 +++++++ .../2-mandatory-rewrite/3-get-card-value.js | 17 ++++++++++-- .../3-get-card-value.test.js | 22 ++++++++++++++- 6 files changed, 65 insertions(+), 28 deletions(-) diff --git a/Sprint-3/2-mandatory-rewrite/1-get-angle-type.js b/Sprint-3/2-mandatory-rewrite/1-get-angle-type.js index d61254bd7..df31158e4 100644 --- a/Sprint-3/2-mandatory-rewrite/1-get-angle-type.js +++ b/Sprint-3/2-mandatory-rewrite/1-get-angle-type.js @@ -1,16 +1,12 @@ function getAngleType(angle) { if (angle === 90) return "Right angle"; - // replace with your completed function from key-implement - + else if (angle < 90) return "Acute angle"; + else if (angle > 90 && angle < 180) return "Obtuse angle"; + else if (angle === 180) return "Straight angle"; + else if (angle > 180 && angle < 360) return "Reflex angle"; } - - - - - - // Don't get bogged down in this detail // Jest uses CommonJS module syntax by default as it's quite old // We will upgrade our approach to ES6 modules in the next course module, so for now diff --git a/Sprint-3/2-mandatory-rewrite/1-get-angle-type.test.js b/Sprint-3/2-mandatory-rewrite/1-get-angle-type.test.js index b62827b7c..2047cf27a 100644 --- a/Sprint-3/2-mandatory-rewrite/1-get-angle-type.test.js +++ b/Sprint-3/2-mandatory-rewrite/1-get-angle-type.test.js @@ -4,21 +4,18 @@ test("should identify right angle (90°)", () => { expect(getAngleType(90)).toEqual("Right angle"); }); -// REPLACE the comments with the tests -// make your test descriptions as clear and readable as possible - -// Case 2: Identify Acute Angles: -// When the angle is less than 90 degrees, -// Then the function should return "Acute angle" +test("should identify acute angle (< 90°)", () => { + expect(getAngleType(60)).toEqual("Acute angle"); +}); -// Case 3: Identify Obtuse Angles: -// When the angle is greater than 90 degrees and less than 180 degrees, -// Then the function should return "Obtuse angle" +test("should identify obtuse angle (> 90° < 120°)", () => { + expect(getAngleType(111)).toEqual("Obtuse angle"); +}); -// Case 4: Identify Straight Angles: -// When the angle is exactly 180 degrees, -// Then the function should return "Straight angle" +test("should identify straight angle (180°)", () => { + expect(getAngleType(180)).toEqual("Straight angle"); +}); -// Case 5: Identify Reflex Angles: -// When the angle is greater than 180 degrees and less than 360 degrees, -// Then the function should return "Reflex angle" +test("should identify reflex angle (> 180° < 360°)", () => { + expect(getAngleType(181)).toEqual("Reflex angle"); +}); diff --git a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.js b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.js index 9836fe398..97fcfb552 100644 --- a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.js +++ b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.js @@ -1,6 +1,8 @@ function isProperFraction(numerator, denominator) { - if (numerator < denominator) return true; - // add your completed function from key-implement here + numerator = numerator < 0 ? Math.abs(numerator) : numerator; + let result = numerator < denominator ? true : false; + return result; } +// or shorter return numerator < denominator because it already returns a boolean module.exports = isProperFraction; \ No newline at end of file diff --git a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js index ff1cc8173..9426d10cb 100644 --- a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js +++ b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js @@ -5,7 +5,16 @@ test("should return true for a proper fraction", () => { }); // Case 2: Identify Improper Fractions: +test("should return false for an improper fraction", () => { + expect(isProperFraction(5, 2)).toEqual(false); +}); // Case 3: Identify Negative Fractions: +test("should return true for a negative fraction", () => { + expect(isProperFraction(-4, 7)).toEqual(true); +}); // Case 4: Identify Equal Numerator and Denominator: +test("should return true for an equal numerator and demnomiator fraction", () => { + expect(isProperFraction(3, 3)).toEqual(true); +}); diff --git a/Sprint-3/2-mandatory-rewrite/3-get-card-value.js b/Sprint-3/2-mandatory-rewrite/3-get-card-value.js index 0d95d3736..a03b1d51d 100644 --- a/Sprint-3/2-mandatory-rewrite/3-get-card-value.js +++ b/Sprint-3/2-mandatory-rewrite/3-get-card-value.js @@ -1,5 +1,18 @@ function getCardValue(card) { - // replace with your code from key-implement - return 11; + if (card.slice(0, 2) == '10') { + return 10; + } + + let rank = card.length > 2 ? card.slice(0,2) : card[0]; + + if (rank === 'A') { + return 11; + } else if (rank >= 2 && rank <= 9) { + return parseInt(rank); + } else if (rank === 'J' || rank === 'Q' || rank === 'K') { + return 10; + } else + return "Invalid card rank" } + module.exports = getCardValue; \ No newline at end of file diff --git a/Sprint-3/2-mandatory-rewrite/3-get-card-value.test.js b/Sprint-3/2-mandatory-rewrite/3-get-card-value.test.js index 03a8e2f34..dba1bbde4 100644 --- a/Sprint-3/2-mandatory-rewrite/3-get-card-value.test.js +++ b/Sprint-3/2-mandatory-rewrite/3-get-card-value.test.js @@ -6,6 +6,26 @@ test("should return 11 for Ace of Spades", () => { }); // Case 2: Handle Number Cards (2-10): +test("return the numeric value corresponding to the rank for 2-10", () => { + const fiveofHearts = getCardValue("5♥"); + expect(fiveofHearts).toEqual(5); + }); + // Case 3: Handle Face Cards (J, Q, K): +test("return the value of 10 for J, Q, K", () => { + const kingofSpades = getCardValue("K♠"); + expect(kingofSpades).toEqual(10); + }); + // Case 4: Handle Ace (A): -// Case 5: Handle Invalid Cards: +test("should return 11 for Ace of Spades single string", () => { + const ace = getCardValue("A"); + expect(ace).toEqual(11); + }); + +test("should throw an error for invalid rank", () => { + // Case 5: Handle Invalid Cards: + const invalid = getCardValue("?"); + expect(invalid).toEqual('Invalid card rank'); +}); + From c6a0ae7c629c5cb1f06472dd51470c928bde2284 Mon Sep 17 00:00:00 2001 From: cyf Date: Fri, 7 Mar 2025 18:33:50 +0000 Subject: [PATCH 3/5] sprint 3 finito --- .../2-is-proper-fraction.test.js | 4 +-- .../3-mandatory-practice/implement/count.js | 17 ++++++++-- .../implement/count.test.js | 11 +++++++ .../implement/get-ordinal-number.js | 19 ++++++++++-- .../implement/get-ordinal-number.test.js | 10 ++++++ .../3-mandatory-practice/implement/repeat.js | 31 +++++++++++++++++-- .../implement/repeat.test.js | 19 ++++++++++++ 7 files changed, 102 insertions(+), 9 deletions(-) diff --git a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js index 9426d10cb..baecf4999 100644 --- a/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js +++ b/Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js @@ -15,6 +15,6 @@ test("should return true for a negative fraction", () => { }); // Case 4: Identify Equal Numerator and Denominator: -test("should return true for an equal numerator and demnomiator fraction", () => { - expect(isProperFraction(3, 3)).toEqual(true); +test("should return false for an equal numerator and demnomiator fraction", () => { + expect(isProperFraction(3, 3)).toEqual(false); }); diff --git a/Sprint-3/3-mandatory-practice/implement/count.js b/Sprint-3/3-mandatory-practice/implement/count.js index fce249650..28c7fad3e 100644 --- a/Sprint-3/3-mandatory-practice/implement/count.js +++ b/Sprint-3/3-mandatory-practice/implement/count.js @@ -1,5 +1,18 @@ +// for (variable of iterable) { +// // code block to be executed +// } function countChar(stringOfCharacters, findCharacter) { - return 5 + let count = 0; + + if (stringOfCharacters.includes(findCharacter)) { + + for (let letter of stringOfCharacters) { + if (letter === findCharacter) { + count +=1; + } + } return count; + } else + return 0; } -module.exports = countChar; \ No newline at end of file +module.exports = countChar; diff --git a/Sprint-3/3-mandatory-practice/implement/count.test.js b/Sprint-3/3-mandatory-practice/implement/count.test.js index 42baf4b4b..340cb974b 100644 --- a/Sprint-3/3-mandatory-practice/implement/count.test.js +++ b/Sprint-3/3-mandatory-practice/implement/count.test.js @@ -1,9 +1,12 @@ + + // implement a function countChar that counts the number of times a character occurs in a string const countChar = require("./count"); // Given a string str and a single character char to search for, // When the countChar function is called with these inputs, // Then it should: + // Scenario: Multiple Occurrences // Given the input string str, // And a character char that may occur multiple times with overlaps within str (e.g., 'a' in 'aaaaa'), @@ -22,3 +25,11 @@ test("should count multiple occurrences of a character", () => { // And a character char that does not exist within the case-sensitive str, // When the function is called with these inputs, // Then it should return 0, indicating that no occurrences of the char were found in the case-sensitive str. + + +test("should count character as 0", () => { + const str = "hello"; + const char = "a"; + const count = countChar(str, char); + expect(count).toEqual(0); +}); \ No newline at end of file diff --git a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js index 24f528b0d..b1032d4f8 100644 --- a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js +++ b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js @@ -1,5 +1,18 @@ function getOrdinalNumber(num) { - return "1st"; -} -module.exports = getOrdinalNumber; \ No newline at end of file + let numString = num.toString() + let lastNum = numString.length >= 2 ? numString.slice(-2) : numString.slice(-1) + + + if (lastNum === '11' || lastNum === '12' || lastNum === '13') { + return `${num}th` + } + + if (lastNum === '1') return `${num}st` + else if (lastNum === '2') return `${num}nd` + else if (lastNum === '3') return `${num}rd` + else return `${num}th` + + } + +module.exports = getOrdinalNumber; diff --git a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js index 6d55dfbb4..c0c6348ff 100644 --- a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js +++ b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js @@ -11,3 +11,13 @@ const getOrdinalNumber = require("./get-ordinal-number"); test("should return '1st' for 1", () => { expect(getOrdinalNumber(1)).toEqual("1st"); }); + +test("should return '2nd' for 2", () => { + expect(getOrdinalNumber(2)).toEqual("2nd"); + }); + +test("should return '13th' for 13", () => { + expect(getOrdinalNumber(13)).toEqual("13th"); + }); + + diff --git a/Sprint-3/3-mandatory-practice/implement/repeat.js b/Sprint-3/3-mandatory-practice/implement/repeat.js index 621f9bd35..c9ecf6707 100644 --- a/Sprint-3/3-mandatory-practice/implement/repeat.js +++ b/Sprint-3/3-mandatory-practice/implement/repeat.js @@ -1,5 +1,32 @@ -function repeat() { - return "hellohellohello"; +function repeat(str, count) { + longStr = ''; + + if (count >= 0) { + for (let i = 0; i < count; i++) { + longStr += str; + } return longStr; + } else + return "Not valid count" + } +// function repeat(str, count) { +// arr = []; + +// for (let i = 0; i < count; i++) { +// arr.push(str); +// } +// return arr.join[''] +// } + +// function repeat(str, count) { +// let arr = []; +// let i = 0; + +// while (i < count) { +// arr.push(str); +// i++; +// } return arr.join(''); +// } + module.exports = repeat; \ No newline at end of file diff --git a/Sprint-3/3-mandatory-practice/implement/repeat.test.js b/Sprint-3/3-mandatory-practice/implement/repeat.test.js index 8a4ab42ef..7d09b111d 100644 --- a/Sprint-3/3-mandatory-practice/implement/repeat.test.js +++ b/Sprint-3/3-mandatory-practice/implement/repeat.test.js @@ -16,17 +16,36 @@ test("should repeat the string count times", () => { expect(repeatedStr).toEqual("hellohellohello"); }); + // case: handle Count of 1: // Given a target string str and a count equal to 1, // When the repeat function is called with these inputs, // Then it should return the original str without repetition, ensuring that a count of 1 results in no repetition. +test("should repeat the string count times", () => { + const str = "hello"; + const count = 1; + const repeatedStr = repeat(str, count); + expect(repeatedStr).toEqual("hello"); + }); // case: Handle Count of 0: // Given a target string str and a count equal to 0, // When the repeat function is called with these inputs, // Then it should return an empty string, ensuring that a count of 0 results in an empty output. +test("should repeat the string count times", () => { + const str = "hello"; + const count = 0; + const repeatedStr = repeat(str, count); + expect(repeatedStr).toEqual(""); + }); // case: Negative Count: // Given a target string str and a negative integer count, // When the repeat function is called with these inputs, // Then it should throw an error or return an appropriate error message, as negative counts are not valid. +test("should repeat the string count times", () => { + const str = "hello"; + const count = -2; + const repeatedStr = repeat(str, count); + expect(repeatedStr).toEqual("Not valid count"); + }); \ No newline at end of file From 458340415d85909d731cc799027b5818bbcd92c7 Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Sat, 15 Mar 2025 20:35:49 +0000 Subject: [PATCH 4/5] issues fixed --- .../3-mandatory-practice/implement/get-ordinal-number.js | 7 ++++--- .../implement/get-ordinal-number.test.js | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js index b1032d4f8..5217a3146 100644 --- a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js +++ b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.js @@ -1,12 +1,13 @@ function getOrdinalNumber(num) { let numString = num.toString() - let lastNum = numString.length >= 2 ? numString.slice(-2) : numString.slice(-1) - + let lastNum = numString.length >= 2 ? numString.slice(-2) : numString.slice(-1); if (lastNum === '11' || lastNum === '12' || lastNum === '13') { return `${num}th` - } + } else if (numString === '23') { + return '23rd' + } if (lastNum === '1') return `${num}st` else if (lastNum === '2') return `${num}nd` diff --git a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js index c0c6348ff..68116b1c9 100644 --- a/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js +++ b/Sprint-3/3-mandatory-practice/implement/get-ordinal-number.test.js @@ -21,3 +21,10 @@ test("should return '13th' for 13", () => { }); +//Reasonable tests, and they pass! +// We might benefit from a couple more assertions here just to be sure, for example trying the number 23. + +test("should return '23rd' for 23", () => { + expect(getOrdinalNumber(23)).toEqual('23rd') +}); +console.log(getOrdinalNumber(23)); From 4ad669405f1800347cd9b41b9912d61a57694d84 Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Fri, 28 Mar 2025 11:01:54 +0000 Subject: [PATCH 5/5] sprint1 --- Sprint-1/1-key-exercises/1-count.js | 2 ++ Sprint-1/1-key-exercises/2-initials.js | 3 ++- Sprint-1/1-key-exercises/3-paths.js | 9 +++++++-- Sprint-1/1-key-exercises/4-random.js | 7 +++++++ Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 7 +++++-- Sprint-1/2-mandatory-errors/2.js | 5 ++++- Sprint-1/2-mandatory-errors/3.js | 9 +++++++-- Sprint-1/2-mandatory-errors/4.js | 4 +++- .../3-mandatory-interpret/1-percentage-change.js | 12 +++++++----- Sprint-1/3-mandatory-interpret/2-time-format.js | 14 ++++++++------ Sprint-1/3-mandatory-interpret/3-to-pounds.js | 4 ++++ 12 files changed, 58 insertions(+), 22 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6..ea8965ea7 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,5 @@ count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 // Describe what line 3 is doing, in particular focus on what = is doing + +//in line 3 the count plus 1 is assigned to the previously declared and assigned variable count \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f617..59eac2572 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,8 @@ let lastName = "Johnson"; // Declare a variable called initials that stores the first character of each string. // This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. -let initials = ``; +let initials = [firstName[0], middleName[0], lastName[0]]; +let solution = initials.join(''); // https://www.google.com/search?q=get+first+character+of+string+mdn diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28..6c512ece9 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,12 @@ console.log(`The base part of ${filePath} is ${base}`); // Create a variable to store the dir part of the filePath variable // Create a variable to store the ext part of the variable -const dir = ; -const ext = ; + +// dir: The part of the path before the last slash (/), which represents the directory. +// base: The file name with the extension, which is everything after the last slash (/). +// ext: The file extension, which is the part after the last period (.) in the base file name. + +const dir = filePath.slice(0, lastSlashIndex); +const ext = base.theLastIndexOf('.'); // https://www.google.com/search?q=slice+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js index 292f83aab..02e924cb1 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,10 @@ const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; // Try breaking down the expression and using documentation to explain what it means // It will help to think about the order in which expressions are evaluated // Try logging the value of num and running the program several times to build an idea of what the program is doing +console.log(num) + +//gets a random number between 1 and 100 +//math.floor random float between 0 and 1, < 1 +//math.floor round down to int +// + 1 to inlude max value so 100 + diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f..6a7a7f690 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,2 @@ -This is just an instruction for the first activity - but it is just for human consumption -We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file +// This is just an instruction for the first activity - but it is just for human consumption +// We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js index 7a43cbea7..ec2c11964 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,7 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; -age = age + 1; +// const age = 33; +let age = 33; +// age = age + 1; +age = age ++; + diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831..67ccd2ead 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,8 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? -console.log(`I was born in ${cityOfBirth}`); +// console.log(`I was born in ${cityOfBirth}`); +// const cityOfBirth = "Bolton"; + const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884d..5f57d154f 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -1,9 +1,14 @@ const cardNumber = 4533787178994213; -const last4Digits = cardNumber.slice(-4); + +// const last4Digits = cardNumber.slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber -// However, the code isn't working +// However, the code isn't working // Before running the code, make and explain a prediction about why the code won't work // Then run the code and see what error it gives. // Consider: Why does it give this error? Is this what I predicted? If not, what's different? // Then try updating the expression last4Digits is assigned to, in order to get the correct value + +// slice works on strings, not integers + +const last4Digits = cardNumber.toString().slice(-4); \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 21dad8c5d..c5e387f88 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,4 @@ const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const 24hourClockTime = "08:53"; + +//there are no instructions here \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e1..ce6867d4f 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -2,7 +2,8 @@ let carPrice = "10,000"; let priceAfterOneYear = "8,543"; carPrice = Number(carPrice.replaceAll(",", "")); -priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); +// priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); missing , +priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); const priceDifference = carPrice - priceAfterOneYear; const percentageChange = (priceDifference / carPrice) * 100; @@ -12,11 +13,12 @@ console.log(`The percentage change is ${percentageChange}`); // Read the code and then answer the questions below // a) How many function calls are there in this file? Write down all the lines where a function call is made - +//3 // b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? - +// 4 // c) Identify all the lines that are variable reassignment statements - +// 4, 6 // d) Identify all the lines that are variable declarations - +// 1, 2, 8, 9 // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? +// replace all instances a , with "" \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d239558..28c900cb4 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -1,4 +1,5 @@ -const movieLength = 8784; // length of movie in seconds +// const movieLength = 8784; // length of movie in seconds +const movieLength = -2; // length of movie in seconds const remainingSeconds = movieLength % 60; const totalMinutes = (movieLength - remainingSeconds) / 60; @@ -12,14 +13,15 @@ console.log(result); // For the piece of code above, read the code and then answer the following questions // a) How many variable declarations are there in this program? - +// 6 // b) How many function calls are there? - +// 0 // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators - +// it calculates whats the reminder of dividing total minutes by 60 // d) Interpret line 4, what does the expression assigned to totalMinutes mean? - +// it calculates the length fof the movie minus seconds divided by 60 to get the total time in minutes // e) What do you think the variable result represents? Can you think of a better name for this variable? - +//leftToPlay // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// it doesn not produce the correct result for a negative value \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69..a6b693215 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -25,3 +25,7 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" +//2 penceStringWithoutTrailingP uses substring method to return the value before the p +//3 padStart method is used to add 0 until the string has the length of 3 +//4 substring method is used to return the string value without the final 2 +//5 pence adds 00 at the end to achieve the length of 2