From 53f918858da8aa6bd98ced053e9715578f987b82 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sat, 11 Oct 2025 22:14:19 +0100 Subject: [PATCH 1/9] new work space in vscode --- Sprint-1/1-key-exercises/1-count.js | 4 ++++ Sprint-1/1-key-exercises/2-initials.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6..a5f73d281 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,7 @@ 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 +Answer +// Line 3; when we the right side first count in the right side is considerd as 0 so 0+1 will be 1. +// But the = sign does not mean the mathimatical equal, its function is to take the result on the right and store it on the left. +// Therfore if we write the same code in next line the result is not one but 2 \ 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..4a09edec5 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,7 @@ 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]}`; // https://www.google.com/search?q=get+first+character+of+string+mdn From a825bf7a5a914d02b03fe59a2c255781d0c75cd4 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Mon, 13 Oct 2025 07:49:27 +0100 Subject: [PATCH 2/9] correctin and updating the exercise --- Sprint-1/1-key-exercises/1-count.js | 6 +++--- Sprint-1/1-key-exercises/3-paths.js | 6 ++++-- Sprint-1/1-key-exercises/4-random.js | 19 +++++++++++++++++++ Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 3 ++- Sprint-1/2-mandatory-errors/2.js | 3 ++- 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index a5f73d281..684b66fcb 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -5,6 +5,6 @@ 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 Answer -// Line 3; when we the right side first count in the right side is considerd as 0 so 0+1 will be 1. -// But the = sign does not mean the mathimatical equal, its function is to take the result on the right and store it on the left. -// Therfore if we write the same code in next line the result is not one but 2 \ No newline at end of file +// Line 3; when we the right side first count in the right side is considered as 0 so 0+1 will be 1. +// But the = sign does not mean the mathematical equal, its function is to take the result on the right and store it on the left. +// Therefore if we write the same code in next line the result is not one but 2 \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28..cbe18ba20 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,9 @@ 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 = ; +const dir = filePath.slice(0, lastSlashIndex); +const lastDotIndex = base.lastIndexOf("."); +const ext = base.slice(lastDotIndex + 1); + // 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..526f7c468 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,22 @@ 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 + +// Answer + +// 1. +// The num in this scenario represent any integer between 1 and 100 + +// 2. +// Math.floor: rounds the number down to the nearest whole number which means it ignores the number to the right of the point. eg. 4.7=4 +// Math.random is a js code that returns any random number that is greater than or equal to 0 and less than 1 +//* is multiplication +// maximum is the maximum given number, in this case 100 +//- is a subtraction +// minimum is the minimum given number, in this case 1 +//(maximum - minimum +1) this is subtracting the minimum number from the maximum and add 1, in this case (100-1+1)=100 +//+ minimum: this turns the value by adding 1 to the whole equation. + +//3. + +console.log(num) diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f..65ad3030d 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..c3714c46a 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,5 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; +let age = 33; age = age + 1; +console.log(age) diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831..ae2731079 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,6 @@ // 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}`); + const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); From d873260b5e5316c20cc0360089ef83bc8f095770 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 15 Oct 2025 08:17:41 +0100 Subject: [PATCH 3/9] Answering each question with in the file by puting // to separate from the code --- Sprint-1/2-mandatory-errors/3.js | 10 +++++++ Sprint-1/2-mandatory-errors/4.js | 5 +++- .../1-percentage-change.js | 27 +++++++++++++++++++ .../3-mandatory-interpret/2-time-format.js | 7 +++++ Sprint-1/3-mandatory-interpret/3-to-pounds.js | 12 ++++++++- 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884d..54901d1d7 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -7,3 +7,13 @@ const last4Digits = cardNumber.slice(-4); // 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 + +//Answer + +// This code is not working because slice() is working with "string" or "arrays" but not with numbers. and cardNumber is a number. +// So the error is "TypeError:cardNumber.slice is not a function"\ +// slice() didn't recognize the number as I expected before. + +const cardNumber = 4533787178994213; +const last4Digits = String(cardNumber).slice(-4); +console.log(last4Digits) diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 21dad8c5d..148952cbc 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,5 @@ const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const 24hourClockTime = "08:53"; +// the 12 and 24 are changing position +const 24HourClockTime = "20:53"; +const 12hourClockTime = "08:53"; \ 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..4a1858990 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -13,10 +13,37 @@ console.log(`The percentage change is ${percentageChange}`); // a) How many function calls are there in this file? Write down all the lines where a function call is made +// There are five functions calls. +//carPrice.replaceAll(",", "") +//Number(carPrice.replaceAll(",", "")) +//priceAfterOneYear.replaceAll("," "") +//Number(priceAfterOneYear.replaceAll("," "")) +//console.log(`The percentage change is ${percentageChange}`) + // 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? +// When I run the code the error is "syntaxError: missing ) after argument list. +// The error comes from line 5 +// The error occurs due to the missing coma between the two strings in the replaceAll() call. +// Add coma between the two strings "priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", ""));" + // c) Identify all the lines that are variable reassignment statements +// there are to lines that state variable reassignment +// carPrice = Number(carPrice.replaceAll(",", "")); +// priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); + // d) Identify all the lines that are variable declarations +// There are fore variable declarations (line 1, line 2, line 7, line 8) +// let carPrice = "10,000"; +// let priceAfterOneYear = "8,543"; +// const priceDifference = carPrice - priceAfterOneYear; +// const percentageChange = (priceDifference / carPrice) * 100; + + // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? + +// carprice at line 1 is a string in order to calculate for the next line of codes you have to change the string ti number. +// carPrice.replaceAll(",","")). delete the coma in between the number (e.g from "10,000" to "10000") +// number() change the string to number ("10000" to 10000) diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d239558..d2fa9711c 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,14 +12,21 @@ 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? +// There are 6 variable declaration. "line1, line3, line4, line6, line7, line9" // b) How many function calls are there? +// There is only one function call in this program "console.log(result);" // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// % is called remainder. There fore movieLength % 60 represents the remainder of the movie length after dividing by 60. // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// totalMinutes are calculated by subtracting the remaining seconds from movie length and divided by 60 to get full minutes. this helps to get a number which divided by 60 with out reminder. // e) What do you think the variable result represents? Can you think of a better name for this variable? +// result represents the total length of the movie in the form of Hour: minute: second +// moveDurationFormatted can be a better name to replace result. // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// Yes it works for all value. the only thing that is concerning is the validation of movieLength as the negative integer also gives value which is unrealistic. diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69..7934f9a8e 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -1,4 +1,4 @@ -const penceString = "399p"; +onst penceString = "399p"; const penceStringWithoutTrailingP = penceString.substring( 0, @@ -25,3 +25,13 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" +// 2. const penceStringWithoutTrailingP = penceString.substring( 0, penceString.length - 1); +// This remove the p and left the string with only 399 +// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); +// this code make sure that the string has 3 character. since one pound is equal 100 pence. +// 4. const pounds = paddedPenceNumberString.substring( 0, paddedPenceNumberString.length - 2); +// This code takes the number leaving the last 2 digits "in this case it takes 3 and leave 99" +// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2) .padEnd(2, "0"); +// This code takes the last digit from the string and also make sure that it has only two digits this gives a "99" value. +// 6. console.log(`£${pounds}.${pence}`); +// his gives a result with £ sign and separated by . " in this case it gives £3.99 " From 872131a73f7e3b3179abb9706f7b578b52995822 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sat, 25 Oct 2025 15:28:02 +0100 Subject: [PATCH 4/9] solution for sprint 2 --- Sprint-2/1-key-errors/0.js | 22 +++++++++++++++---- Sprint-2/1-key-errors/1.js | 16 +++++++++++--- Sprint-2/1-key-errors/2.js | 11 +++++++++- Sprint-2/2-mandatory-debug/0.js | 11 ++++++++-- Sprint-2/2-mandatory-debug/1.js | 13 ++++++++--- Sprint-2/2-mandatory-debug/2.js | 20 +++++++++++++++-- Sprint-2/3-mandatory-implement/1-bmi.js | 7 ++++-- Sprint-2/3-mandatory-implement/2-cases.js | 6 +++++ Sprint-2/3-mandatory-implement/3-to-pounds.js | 11 ++++++++++ Sprint-2/4-mandatory-interpret/time-format.js | 6 +++++ Sprint-2/5-stretch-extend/format-time.js | 22 ++++++++++++++++++- 11 files changed, 127 insertions(+), 18 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a0..06d225c66 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,27 @@ // Predict and explain first... // =============> write your prediction here + +// The code will capitalize the first word of the str which gives "Str" // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring -function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; - return str; -} +// The error occurs in line 13 and it says "SyntaxError: Identifier 'str' has already been declared" +// The error is informing us that the string str has already been declared in line 12 so we can not declare it again. + +//function capitalise(str) { +// let str = `${str[0].toUpperCase()}${str.slice(1)}`; +// return str; +//} // =============> write your explanation here + +// The code is written to capitalize the first letter of str which is expected to give the result Str. + // =============> write your new code here + +function capitalise(str) { + str = `${str[0].toUpperCase()}${str.slice(1)}`; + return str; +} +console.log(capitalise("str")) \ No newline at end of file diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f..4b783162f 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -2,19 +2,29 @@ // Why will an error occur when this program runs? // =============> write your prediction here +// This code is tend to be a code to convert decimal number in to %. I predict there will be an error because the call for the function has a bug. // Try playing computer with the example to work out what is going on -function convertToPercentage(decimalNumber) { +/*function convertToPercentage(decimalNumber) { const decimalNumber = 0.5; const percentage = `${decimalNumber * 100}%`; return percentage; -} +}/ -console.log(decimalNumber); +console.log(decimalNumber);*/ // =============> write your explanation here +// A syntaxError has been observed because the decimalNumber is already declared. +// if we delete line 10 anther error happen this time about calling the function in which decimalNumber is not defined in the global scope. // Finally, correct the code to fix the problem // =============> write your new code here +function convertToPercentage(decimalNumber) { + const percentage = `${decimalNumber * 100}%`; + + return percentage; +} + +console.log(convertToPercentage("0.5")); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cf..75b776f84 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,17 +4,26 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here +/* There is a problem in the function parameter. we can not use number in parameter. +even though line 12 by it self has no coding problem but the num is not declared before.*/ +/* function square(3) { return num * num; } +*/ // =============> write the error message here - +/* unexpected number // =============> explain this error message here +we can not use number in a parameter so 3 is not used as identifier */ // Finally, correct the code to fix the problem // =============> write your new code here +function square(num) { + return num * num; +} +console.log(square("3")) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b41..01b167f42 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,21 @@ // Predict and explain first... // =============> write your prediction here +/*the function doesn't return any thing so there will be an error. */ -function multiply(a, b) { +/*function multiply(a, b) { console.log(a * b); } -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);*/ // =============> write your explanation here +/* As predicted the function does not return any thing. But the first call gives 320. and the second undefine. */ // Finally, correct the code to fix the problem // =============> write your new code here +function multiply(a, b) { + return a * b; +} + +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcf..4a234a779 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,20 @@ // Predict and explain first... // =============> write your prediction here +/* The code will give us the sum of 10 and 32 which will be " The sum of 10 and 32 is 42" */ -function sum(a, b) { +/*function sum(a, b) { return; a + b; } -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/ // =============> write your explanation here +/* the call of the function gives undefine result. the reason for this is the semicolon after return which shouldn't be placed there. // Finally, correct the code to fix the problem -// =============> write your new code here +// =============> write your new code here */ +function sum(a, b) { + return a + b; +} + +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc3..d16337c65 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,8 +2,12 @@ // Predict the output of the following code: // =============> Write your prediction here +/* I predict that the three call are giving +The last digit of 42 is 2 +The last digit of 105 is 5 +The last digit of 806 is 6 */ -const num = 103; +/*const num = 103; function getLastDigit() { return num.toString().slice(-1); @@ -12,13 +16,25 @@ function getLastDigit() { console.log(`The last digit of 42 is ${getLastDigit(42)}`); console.log(`The last digit of 105 is ${getLastDigit(105)}`); console.log(`The last digit of 806 is ${getLastDigit(806)}`); - + */ // Now run the code and compare the output to your prediction // =============> write the output here +/* The last digit of 42 is 3 + The last digit of 105 is 3 + The last digit of 806 is 3 */ // Explain why the output is the way it is // =============> write your explanation here +/* because the num is determined at fires and 103 is given to the num. as a result we see the same result.*/ // Finally, correct the code to fix the problem // =============> write your new code here +function getLastDigit(num) { + return num.toString().slice(-1); +} + +console.log(`The last digit of 42 is ${getLastDigit(42)}`); +console.log(`The last digit of 105 is ${getLastDigit(105)}`); +console.log(`The last digit of 806 is ${getLastDigit(806)}`); + // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1..6cc7f80a1 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -14,6 +14,9 @@ // Then when we call this function with the weight and height // It should return their Body Mass Index to 1 decimal place -function calculateBMI(weight, height) { +function calculateBMI(weight, height) { + const bmi= weight/ (height*height) + return bmi.toFixed(1); // return the BMI of someone based off their weight and height -} \ No newline at end of file +} +console.log(calculateBMI(86,1.70)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad..86e3f83cf 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,9 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +function toUpperCase(text) { + return text.toUpperCase(); +} + +console.log(toUpperCase("hello there")); +console.log(toUpperCase("lord of the ring")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a70..a05873299 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,14 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs +function toPounds(pennies) { + const pounds = pennies / 100; + return pounds.toFixed(2); +} + +// calling the function to make sure it works +console.log(toPounds(32391)); +console.log(toPounds(3239)); +console.log(toPounds(323)); +console.log(toPounds(32)); +console.log(toPounds(3)); diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 7c98eb0e8..4fdb1c9fb 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -10,6 +10,7 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } +console.log(formatTimeDisplay(61)); // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions @@ -18,17 +19,22 @@ function formatTimeDisplay(seconds) { // a) When formatTimeDisplay is called how many times will pad be called? // =============> write your answer here +/* pad will be called 3 times. one for totalHours, one for remainingMinutes and one for remainingSeconds.*/ // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? // =============> write your answer here +/* when I run the code the result is 00:01:01 there for the value assigned to num is "0". // c) What is the return value of pad is called for the first time? // =============> write your answer here +/* the return value is "00". this comes 0 changed to string and then padstart(2,0) changes it to "00" */ // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The value assigned to num when the pad is called for the last time is "1". */ // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The return value is 1. The code 1.toString() changes the num 1 to string "1" then the code .padStart(2, "0"); changes "1" to "01" */ \ No newline at end of file diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 32a32e66b..b1a580a47 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,10 +4,17 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); + if (hours===0) { + return`12:00 am` + } + if (hours===12) { + return `12:00 pm` + } if (hours > 12) { return `${hours - 12}:00 pm`; } - return `${time} am`; + if (hours > 0 && hours < 12) + return `${String(hours).padStart(2, "0")}:00 am`; } const currentOutput = formatAs12HourClock("08:00"); @@ -22,4 +29,17 @@ const targetOutput2 = "11:00 pm"; console.assert( currentOutput2 === targetOutput2, `current output: ${currentOutput2}, target output: ${targetOutput2}` + +); +const currentOutput3 = formatAs12HourClock("00:00"); +const targetOutput3 = "12:00 am"; +console.assert( + currentOutput3 === targetOutput3, + `current output: ${currentOutput2}, target output: ${targetOutput2}` +); +const currentOutput4 = formatAs12HourClock("12:00"); +const targetOutput4 = "12:00 pm"; +console.assert( + currentOutput4 === targetOutput4, + `current output: ${currentOutput2}, target output: ${targetOutput2}` ); From 2e1ae4aad01b044c7c0f542be3772c01163c6269 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 29 Oct 2025 12:34:41 +0000 Subject: [PATCH 5/9] correcting the code and testing using JS --- Sprint-1/1-key-exercises/1-count.js | 4 --- Sprint-1/1-key-exercises/2-initials.js | 2 +- Sprint-1/1-key-exercises/3-paths.js | 6 ++--- Sprint-1/1-key-exercises/4-random.js | 19 ------------- Sprint-1/2-mandatory-errors/0.js | 4 +-- Sprint-1/2-mandatory-errors/1.js | 3 +-- Sprint-1/2-mandatory-errors/2.js | 3 +-- Sprint-1/2-mandatory-errors/3.js | 10 ------- Sprint-1/2-mandatory-errors/4.js | 5 +--- .../1-percentage-change.js | 27 ------------------- .../3-mandatory-interpret/2-time-format.js | 7 ----- Sprint-1/3-mandatory-interpret/3-to-pounds.js | 12 +-------- Sprint-3/2-practice-tdd/count.js | 11 +++++++- Sprint-3/2-practice-tdd/count.test.js | 14 ++++++++++ Sprint-3/2-practice-tdd/get-ordinal-number.js | 9 ++++++- .../2-practice-tdd/get-ordinal-number.test.js | 24 +++++++++++++++++ Sprint-3/2-practice-tdd/repeat.js | 4 +-- Sprint-3/2-practice-tdd/repeat.test.js | 18 +++++++++++++ 18 files changed, 85 insertions(+), 97 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 684b66fcb..117bcb2b6 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,7 +4,3 @@ 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 -Answer -// Line 3; when we the right side first count in the right side is considered as 0 so 0+1 will be 1. -// But the = sign does not mean the mathematical equal, its function is to take the result on the right and store it on the left. -// Therefore if we write the same code in next line the result is not one but 2 \ 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 4a09edec5..47561f617 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,7 @@ 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 = `${firstName[0]}${middleName[0]}${lastName[0]}`; +let initials = ``; // 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 cbe18ba20..ab90ebb28 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,9 +17,7 @@ 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 = filePath.slice(0, lastSlashIndex); -const lastDotIndex = base.lastIndexOf("."); -const ext = base.slice(lastDotIndex + 1); - +const dir = ; +const ext = ; // 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 526f7c468..292f83aab 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,22 +7,3 @@ 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 - -// Answer - -// 1. -// The num in this scenario represent any integer between 1 and 100 - -// 2. -// Math.floor: rounds the number down to the nearest whole number which means it ignores the number to the right of the point. eg. 4.7=4 -// Math.random is a js code that returns any random number that is greater than or equal to 0 and less than 1 -//* is multiplication -// maximum is the maximum given number, in this case 100 -//- is a subtraction -// minimum is the minimum given number, in this case 1 -//(maximum - minimum +1) this is subtracting the minimum number from the maximum and add 1, in this case (100-1+1)=100 -//+ minimum: this turns the value by adding 1 to the whole equation. - -//3. - -console.log(num) diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index 65ad3030d..cf6c5039f 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 c3714c46a..7a43cbea7 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,5 +1,4 @@ // trying to create an age variable and then reassign the value by 1 -let age = 33; +const age = 33; age = age + 1; -console.log(age) diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index ae2731079..e09b89831 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,6 +1,5 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? - -const cityOfBirth = "Bolton"; console.log(`I was born in ${cityOfBirth}`); +const cityOfBirth = "Bolton"; diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index 54901d1d7..ec101884d 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -7,13 +7,3 @@ const last4Digits = cardNumber.slice(-4); // 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 - -//Answer - -// This code is not working because slice() is working with "string" or "arrays" but not with numbers. and cardNumber is a number. -// So the error is "TypeError:cardNumber.slice is not a function"\ -// slice() didn't recognize the number as I expected before. - -const cardNumber = 4533787178994213; -const last4Digits = String(cardNumber).slice(-4); -console.log(last4Digits) diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 148952cbc..21dad8c5d 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,5 +1,2 @@ const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; -// the 12 and 24 are changing position -const 24HourClockTime = "20:53"; -const 12hourClockTime = "08:53"; \ No newline at end of file +const 24hourClockTime = "08:53"; \ 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 4a1858990..e24ecb8e1 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -13,37 +13,10 @@ console.log(`The percentage change is ${percentageChange}`); // a) How many function calls are there in this file? Write down all the lines where a function call is made -// There are five functions calls. -//carPrice.replaceAll(",", "") -//Number(carPrice.replaceAll(",", "")) -//priceAfterOneYear.replaceAll("," "") -//Number(priceAfterOneYear.replaceAll("," "")) -//console.log(`The percentage change is ${percentageChange}`) - // 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? -// When I run the code the error is "syntaxError: missing ) after argument list. -// The error comes from line 5 -// The error occurs due to the missing coma between the two strings in the replaceAll() call. -// Add coma between the two strings "priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", ""));" - // c) Identify all the lines that are variable reassignment statements -// there are to lines that state variable reassignment -// carPrice = Number(carPrice.replaceAll(",", "")); -// priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); - // d) Identify all the lines that are variable declarations -// There are fore variable declarations (line 1, line 2, line 7, line 8) -// let carPrice = "10,000"; -// let priceAfterOneYear = "8,543"; -// const priceDifference = carPrice - priceAfterOneYear; -// const percentageChange = (priceDifference / carPrice) * 100; - - // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? - -// carprice at line 1 is a string in order to calculate for the next line of codes you have to change the string ti number. -// carPrice.replaceAll(",","")). delete the coma in between the number (e.g from "10,000" to "10000") -// number() change the string to number ("10000" to 10000) diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index d2fa9711c..47d239558 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,21 +12,14 @@ 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? -// There are 6 variable declaration. "line1, line3, line4, line6, line7, line9" // b) How many function calls are there? -// There is only one function call in this program "console.log(result);" // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators -// % is called remainder. There fore movieLength % 60 represents the remainder of the movie length after dividing by 60. // d) Interpret line 4, what does the expression assigned to totalMinutes mean? -// totalMinutes are calculated by subtracting the remaining seconds from movie length and divided by 60 to get full minutes. this helps to get a number which divided by 60 with out reminder. // e) What do you think the variable result represents? Can you think of a better name for this variable? -// result represents the total length of the movie in the form of Hour: minute: second -// moveDurationFormatted can be a better name to replace result. // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer -// Yes it works for all value. the only thing that is concerning is the validation of movieLength as the negative integer also gives value which is unrealistic. diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 7934f9a8e..60c9ace69 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -1,4 +1,4 @@ -onst penceString = "399p"; +const penceString = "399p"; const penceStringWithoutTrailingP = penceString.substring( 0, @@ -25,13 +25,3 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" -// 2. const penceStringWithoutTrailingP = penceString.substring( 0, penceString.length - 1); -// This remove the p and left the string with only 399 -// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); -// this code make sure that the string has 3 character. since one pound is equal 100 pence. -// 4. const pounds = paddedPenceNumberString.substring( 0, paddedPenceNumberString.length - 2); -// This code takes the number leaving the last 2 digits "in this case it takes 3 and leave 99" -// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2) .padEnd(2, "0"); -// This code takes the last digit from the string and also make sure that it has only two digits this gives a "99" value. -// 6. console.log(`£${pounds}.${pence}`); -// his gives a result with £ sign and separated by . " in this case it gives £3.99 " diff --git a/Sprint-3/2-practice-tdd/count.js b/Sprint-3/2-practice-tdd/count.js index 95b6ebb7d..6a04c9107 100644 --- a/Sprint-3/2-practice-tdd/count.js +++ b/Sprint-3/2-practice-tdd/count.js @@ -1,5 +1,14 @@ function countChar(stringOfCharacters, findCharacter) { - return 5 + let count = 0; + + for (let character of stringOfCharacters) { + if (character === findCharacter) { + count++; + } + } + return count; } module.exports = countChar; + + diff --git a/Sprint-3/2-practice-tdd/count.test.js b/Sprint-3/2-practice-tdd/count.test.js index 42baf4b4b..a009721b7 100644 --- a/Sprint-3/2-practice-tdd/count.test.js +++ b/Sprint-3/2-practice-tdd/count.test.js @@ -17,6 +17,20 @@ test("should count multiple occurrences of a character", () => { expect(count).toEqual(5); }); +test("should count multiple occurrences of a character", () => { + const str = "banana"; + const char = "a"; + const count = countChar(str, char); + expect(count).toEqual(3); +}); + +test("should count multiple occurrences of a character", () => { + const str = "ananas"; + const char = "a"; + const count = countChar(str, char); + expect(count).toEqual(3); +}); + // Scenario: No Occurrences // Given the input string str, // And a character char that does not exist within the case-sensitive str, diff --git a/Sprint-3/2-practice-tdd/get-ordinal-number.js b/Sprint-3/2-practice-tdd/get-ordinal-number.js index f95d71db1..4f5153e2f 100644 --- a/Sprint-3/2-practice-tdd/get-ordinal-number.js +++ b/Sprint-3/2-practice-tdd/get-ordinal-number.js @@ -1,5 +1,12 @@ function getOrdinalNumber(num) { - return "1st"; + const last = num % 10; + const lastTwo = num % 100; + + if (last === 1 && lastTwo !== 11) return num + "st"; + if (last === 2 && lastTwo !== 12) return num + "nd"; + if (last === 3 && lastTwo !== 13) return num + "rd"; + return num + "th"; } module.exports = getOrdinalNumber; + diff --git a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js index dfe4b6091..e591737be 100644 --- a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js +++ b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js @@ -11,3 +11,27 @@ 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 '3rd' for 3", () => { + expect(getOrdinalNumber(3)).toEqual("3rd"); +}); + +test("should return '11th' for 11", () => { + expect(getOrdinalNumber(11)).toEqual("11th"); +}); + +test("should return '12th' for 12", () => { + expect(getOrdinalNumber(12)).toEqual("12th"); +}); + +test("should return '13th' for 13", () => { + expect(getOrdinalNumber(13)).toEqual("13th"); +}); + +test("should return '24th' for 14", () => { + expect(getOrdinalNumber(24)).toEqual("24th"); +}); \ No newline at end of file diff --git a/Sprint-3/2-practice-tdd/repeat.js b/Sprint-3/2-practice-tdd/repeat.js index 00e60d7f3..f2d863fc0 100644 --- a/Sprint-3/2-practice-tdd/repeat.js +++ b/Sprint-3/2-practice-tdd/repeat.js @@ -1,5 +1,5 @@ -function repeat() { - return "hellohellohello"; +function repeat(word, n) { + return word.repeat(n); } module.exports = repeat; diff --git a/Sprint-3/2-practice-tdd/repeat.test.js b/Sprint-3/2-practice-tdd/repeat.test.js index 34097b09c..147478764 100644 --- a/Sprint-3/2-practice-tdd/repeat.test.js +++ b/Sprint-3/2-practice-tdd/repeat.test.js @@ -21,12 +21,30 @@ test("should repeat the string count times", () => { // 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 = -1; + const repeatedStr = repeat(str, count); + expect(repeatedStr).toEqual("hellohellohello"); +}); \ No newline at end of file From 9859d0d16a834674ad366bfab36b3cfb95575420 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 29 Oct 2025 12:41:23 +0000 Subject: [PATCH 6/9] restoring sprint 2 --- Sprint-2/1-key-errors/0.js | 22 ++++--------------- Sprint-2/1-key-errors/1.js | 16 +++----------- Sprint-2/1-key-errors/2.js | 11 +--------- Sprint-2/2-mandatory-debug/0.js | 11 ++-------- Sprint-2/2-mandatory-debug/1.js | 13 +++-------- Sprint-2/2-mandatory-debug/2.js | 20 ++--------------- Sprint-2/3-mandatory-implement/1-bmi.js | 7 ++---- Sprint-2/3-mandatory-implement/2-cases.js | 6 ----- Sprint-2/3-mandatory-implement/3-to-pounds.js | 11 ---------- Sprint-2/4-mandatory-interpret/time-format.js | 6 ----- Sprint-2/5-stretch-extend/format-time.js | 22 +------------------ 11 files changed, 18 insertions(+), 127 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 06d225c66..653d6f5a0 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,27 +1,13 @@ // Predict and explain first... // =============> write your prediction here - -// The code will capitalize the first word of the str which gives "Str" // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring -// The error occurs in line 13 and it says "SyntaxError: Identifier 'str' has already been declared" -// The error is informing us that the string str has already been declared in line 12 so we can not declare it again. - -//function capitalise(str) { -// let str = `${str[0].toUpperCase()}${str.slice(1)}`; -// return str; -//} - -// =============> write your explanation here - -// The code is written to capitalize the first letter of str which is expected to give the result Str. - -// =============> write your new code here - function capitalise(str) { - str = `${str[0].toUpperCase()}${str.slice(1)}`; + let str = `${str[0].toUpperCase()}${str.slice(1)}`; return str; } -console.log(capitalise("str")) \ No newline at end of file + +// =============> write your explanation here +// =============> write your new code here diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index 4b783162f..f2d56151f 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -2,29 +2,19 @@ // Why will an error occur when this program runs? // =============> write your prediction here -// This code is tend to be a code to convert decimal number in to %. I predict there will be an error because the call for the function has a bug. // Try playing computer with the example to work out what is going on -/*function convertToPercentage(decimalNumber) { +function convertToPercentage(decimalNumber) { const decimalNumber = 0.5; const percentage = `${decimalNumber * 100}%`; return percentage; -}/ +} -console.log(decimalNumber);*/ +console.log(decimalNumber); // =============> write your explanation here -// A syntaxError has been observed because the decimalNumber is already declared. -// if we delete line 10 anther error happen this time about calling the function in which decimalNumber is not defined in the global scope. // Finally, correct the code to fix the problem // =============> write your new code here -function convertToPercentage(decimalNumber) { - const percentage = `${decimalNumber * 100}%`; - - return percentage; -} - -console.log(convertToPercentage("0.5")); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index 75b776f84..aad57f7cf 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,26 +4,17 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here -/* There is a problem in the function parameter. we can not use number in parameter. -even though line 12 by it self has no coding problem but the num is not declared before.*/ -/* function square(3) { return num * num; } -*/ // =============> write the error message here -/* unexpected number + // =============> explain this error message here -we can not use number in a parameter so 3 is not used as identifier */ // Finally, correct the code to fix the problem // =============> write your new code here -function square(num) { - return num * num; -} -console.log(square("3")) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index 01b167f42..b27511b41 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,21 +1,14 @@ // Predict and explain first... // =============> write your prediction here -/*the function doesn't return any thing so there will be an error. */ -/*function multiply(a, b) { +function multiply(a, b) { console.log(a * b); } -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);*/ +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); // =============> write your explanation here -/* As predicted the function does not return any thing. But the first call gives 320. and the second undefine. */ // Finally, correct the code to fix the problem // =============> write your new code here -function multiply(a, b) { - return a * b; -} - -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 4a234a779..37cedfbcf 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,20 +1,13 @@ // Predict and explain first... // =============> write your prediction here -/* The code will give us the sum of 10 and 32 which will be " The sum of 10 and 32 is 42" */ -/*function sum(a, b) { +function sum(a, b) { return; a + b; } -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/ +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); // =============> write your explanation here -/* the call of the function gives undefine result. the reason for this is the semicolon after return which shouldn't be placed there. // Finally, correct the code to fix the problem -// =============> write your new code here */ -function sum(a, b) { - return a + b; -} - -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); \ No newline at end of file +// =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index d16337c65..57d3f5dc3 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,12 +2,8 @@ // Predict the output of the following code: // =============> Write your prediction here -/* I predict that the three call are giving -The last digit of 42 is 2 -The last digit of 105 is 5 -The last digit of 806 is 6 */ -/*const num = 103; +const num = 103; function getLastDigit() { return num.toString().slice(-1); @@ -16,25 +12,13 @@ function getLastDigit() { console.log(`The last digit of 42 is ${getLastDigit(42)}`); console.log(`The last digit of 105 is ${getLastDigit(105)}`); console.log(`The last digit of 806 is ${getLastDigit(806)}`); - */ + // Now run the code and compare the output to your prediction // =============> write the output here -/* The last digit of 42 is 3 - The last digit of 105 is 3 - The last digit of 806 is 3 */ // Explain why the output is the way it is // =============> write your explanation here -/* because the num is determined at fires and 103 is given to the num. as a result we see the same result.*/ // Finally, correct the code to fix the problem // =============> write your new code here -function getLastDigit(num) { - return num.toString().slice(-1); -} - -console.log(`The last digit of 42 is ${getLastDigit(42)}`); -console.log(`The last digit of 105 is ${getLastDigit(105)}`); -console.log(`The last digit of 806 is ${getLastDigit(806)}`); - // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 6cc7f80a1..17b1cbde1 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -14,9 +14,6 @@ // Then when we call this function with the weight and height // It should return their Body Mass Index to 1 decimal place -function calculateBMI(weight, height) { - const bmi= weight/ (height*height) - return bmi.toFixed(1); +function calculateBMI(weight, height) { // return the BMI of someone based off their weight and height -} -console.log(calculateBMI(86,1.70)); \ No newline at end of file +} \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 86e3f83cf..5b0ef77ad 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,9 +14,3 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase -function toUpperCase(text) { - return text.toUpperCase(); -} - -console.log(toUpperCase("hello there")); -console.log(toUpperCase("lord of the ring")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index a05873299..6265a1a70 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,14 +4,3 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs -function toPounds(pennies) { - const pounds = pennies / 100; - return pounds.toFixed(2); -} - -// calling the function to make sure it works -console.log(toPounds(32391)); -console.log(toPounds(3239)); -console.log(toPounds(323)); -console.log(toPounds(32)); -console.log(toPounds(3)); diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 4fdb1c9fb..7c98eb0e8 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -10,7 +10,6 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } -console.log(formatTimeDisplay(61)); // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions @@ -19,22 +18,17 @@ console.log(formatTimeDisplay(61)); // a) When formatTimeDisplay is called how many times will pad be called? // =============> write your answer here -/* pad will be called 3 times. one for totalHours, one for remainingMinutes and one for remainingSeconds.*/ // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? // =============> write your answer here -/* when I run the code the result is 00:01:01 there for the value assigned to num is "0". // c) What is the return value of pad is called for the first time? // =============> write your answer here -/* the return value is "00". this comes 0 changed to string and then padstart(2,0) changes it to "00" */ // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here -/* The value assigned to num when the pad is called for the last time is "1". */ // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here -/* The return value is 1. The code 1.toString() changes the num 1 to string "1" then the code .padStart(2, "0"); changes "1" to "01" */ \ No newline at end of file diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index b1a580a47..32a32e66b 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,17 +4,10 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - if (hours===0) { - return`12:00 am` - } - if (hours===12) { - return `12:00 pm` - } if (hours > 12) { return `${hours - 12}:00 pm`; } - if (hours > 0 && hours < 12) - return `${String(hours).padStart(2, "0")}:00 am`; + return `${time} am`; } const currentOutput = formatAs12HourClock("08:00"); @@ -29,17 +22,4 @@ const targetOutput2 = "11:00 pm"; console.assert( currentOutput2 === targetOutput2, `current output: ${currentOutput2}, target output: ${targetOutput2}` - -); -const currentOutput3 = formatAs12HourClock("00:00"); -const targetOutput3 = "12:00 am"; -console.assert( - currentOutput3 === targetOutput3, - `current output: ${currentOutput2}, target output: ${targetOutput2}` -); -const currentOutput4 = formatAs12HourClock("12:00"); -const targetOutput4 = "12:00 pm"; -console.assert( - currentOutput4 === targetOutput4, - `current output: ${currentOutput2}, target output: ${targetOutput2}` ); From 0c6b25cae01138b46ffa0d29f46cfc1f4666750a Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Tue, 11 Nov 2025 07:51:08 +0000 Subject: [PATCH 7/9] changes are made based on feedback --- Sprint-3/2-practice-tdd/count.test.js | 6 +++ .../2-practice-tdd/get-ordinal-number.test.js | 37 ++++++++----------- Sprint-3/2-practice-tdd/repeat.js | 6 +++ Sprint-3/2-practice-tdd/repeat.test.js | 2 +- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/Sprint-3/2-practice-tdd/count.test.js b/Sprint-3/2-practice-tdd/count.test.js index a009721b7..dbbe35f21 100644 --- a/Sprint-3/2-practice-tdd/count.test.js +++ b/Sprint-3/2-practice-tdd/count.test.js @@ -36,3 +36,9 @@ 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 multiple occurrences of a character", () => { + 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/2-practice-tdd/get-ordinal-number.test.js b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js index e591737be..71d48d55f 100644 --- a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js +++ b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js @@ -7,31 +7,24 @@ const getOrdinalNumber = require("./get-ordinal-number"); // Case 1: Identify the ordinal number for 1 // When the number is 1, // Then the function should return "1st" - -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 '3rd' for 3", () => { - expect(getOrdinalNumber(3)).toEqual("3rd"); -}); - -test("should return '11th' for 11", () => { - expect(getOrdinalNumber(11)).toEqual("11th"); +test("append 'st' to numbers ending in 1, except those ending in 11 which is 11th", () => { + expect( getOrdinalNumber(1) ).toEqual("1st"); + expect( getOrdinalNumber(11) ).toEqual("11th"); + expect( getOrdinalNumber(21) ).toEqual("21st"); + expect( getOrdinalNumber(221) ).toEqual("221st"); }); -test("should return '12th' for 12", () => { - expect(getOrdinalNumber(12)).toEqual("12th"); +test("append 'nd' to numbers ending in 2, except those ending in 12 which is 12th", () => { + expect( getOrdinalNumber(2) ).toEqual("2nd"); + expect( getOrdinalNumber(12) ).toEqual("12th"); + expect( getOrdinalNumber(22) ).toEqual("22nd"); + expect( getOrdinalNumber(132) ).toEqual("132nd"); }); -test("should return '13th' for 13", () => { - expect(getOrdinalNumber(13)).toEqual("13th"); +test("append 'rd' to numbers ending in 3, except those ending in 13 which is 13th", () => { + expect( getOrdinalNumber(3) ).toEqual("3rd"); + expect( getOrdinalNumber(13) ).toEqual("13th"); + expect( getOrdinalNumber(33) ).toEqual("33rd"); + expect( getOrdinalNumber(133) ).toEqual("133rd"); }); -test("should return '24th' for 14", () => { - expect(getOrdinalNumber(24)).toEqual("24th"); -}); \ No newline at end of file diff --git a/Sprint-3/2-practice-tdd/repeat.js b/Sprint-3/2-practice-tdd/repeat.js index f2d863fc0..27633e6d8 100644 --- a/Sprint-3/2-practice-tdd/repeat.js +++ b/Sprint-3/2-practice-tdd/repeat.js @@ -1,4 +1,10 @@ function repeat(word, n) { + if (typeof n !== 'number' || n < 0) { + return "Count must be a non-negative integer"; + } + if (n === 0) { + return " "; + } return word.repeat(n); } diff --git a/Sprint-3/2-practice-tdd/repeat.test.js b/Sprint-3/2-practice-tdd/repeat.test.js index 147478764..0750507ab 100644 --- a/Sprint-3/2-practice-tdd/repeat.test.js +++ b/Sprint-3/2-practice-tdd/repeat.test.js @@ -46,5 +46,5 @@ test("should repeat the string count times", () => { const str = "hello"; const count = -1; const repeatedStr = repeat(str, count); - expect(repeatedStr).toEqual("hellohellohello"); + expect(repeatedStr).toEqual("Count must be a non-negative integer"); }); \ No newline at end of file From ed2e57d41098f47af05d51951b1441094ba4cd0c Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 12 Nov 2025 17:12:24 +0000 Subject: [PATCH 8/9] communicating with the comment to resolve the issue --- Sprint-3/2-practice-tdd/count.test.js | 2 +- .../2-practice-tdd/get-ordinal-number.test.js | 17 +---------------- Sprint-3/2-practice-tdd/repeat.js | 8 +++++--- Sprint-3/2-practice-tdd/repeat.test.js | 8 ++++---- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/Sprint-3/2-practice-tdd/count.test.js b/Sprint-3/2-practice-tdd/count.test.js index dbbe35f21..763af4c8f 100644 --- a/Sprint-3/2-practice-tdd/count.test.js +++ b/Sprint-3/2-practice-tdd/count.test.js @@ -36,7 +36,7 @@ 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 multiple occurrences of a character", () => { +test("should count no occurrence of a character", () => { const str = "hello"; const char = "a"; const count = countChar(str, char); diff --git a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js index 71d48d55f..19488f2a9 100644 --- a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js +++ b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js @@ -7,24 +7,9 @@ const getOrdinalNumber = require("./get-ordinal-number"); // Case 1: Identify the ordinal number for 1 // When the number is 1, // Then the function should return "1st" -test("append 'st' to numbers ending in 1, except those ending in 11 which is 11th", () => { +test("append 'st' to numbers ending in 1, except those ending in 11", () => { expect( getOrdinalNumber(1) ).toEqual("1st"); - expect( getOrdinalNumber(11) ).toEqual("11th"); expect( getOrdinalNumber(21) ).toEqual("21st"); expect( getOrdinalNumber(221) ).toEqual("221st"); }); -test("append 'nd' to numbers ending in 2, except those ending in 12 which is 12th", () => { - expect( getOrdinalNumber(2) ).toEqual("2nd"); - expect( getOrdinalNumber(12) ).toEqual("12th"); - expect( getOrdinalNumber(22) ).toEqual("22nd"); - expect( getOrdinalNumber(132) ).toEqual("132nd"); -}); - -test("append 'rd' to numbers ending in 3, except those ending in 13 which is 13th", () => { - expect( getOrdinalNumber(3) ).toEqual("3rd"); - expect( getOrdinalNumber(13) ).toEqual("13th"); - expect( getOrdinalNumber(33) ).toEqual("33rd"); - expect( getOrdinalNumber(133) ).toEqual("133rd"); -}); - diff --git a/Sprint-3/2-practice-tdd/repeat.js b/Sprint-3/2-practice-tdd/repeat.js index 27633e6d8..a1ed576da 100644 --- a/Sprint-3/2-practice-tdd/repeat.js +++ b/Sprint-3/2-practice-tdd/repeat.js @@ -1,11 +1,13 @@ function repeat(word, n) { if (typeof n !== 'number' || n < 0) { - return "Count must be a non-negative integer"; - } + throw new Error("Count must be a non-negative integer"); + } if (n === 0) { - return " "; + return ""; } return word.repeat(n); } module.exports = repeat; + + diff --git a/Sprint-3/2-practice-tdd/repeat.test.js b/Sprint-3/2-practice-tdd/repeat.test.js index 0750507ab..09cd7da39 100644 --- a/Sprint-3/2-practice-tdd/repeat.test.js +++ b/Sprint-3/2-practice-tdd/repeat.test.js @@ -35,16 +35,16 @@ test("should repeat the string count times", () => { const str = "hello"; const count = 0; const repeatedStr = repeat(str, count); - expect(repeatedStr).toEqual(" "); + 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 = -1; - const repeatedStr = repeat(str, count); - expect(repeatedStr).toEqual("Count must be a non-negative integer"); -}); \ No newline at end of file + expect(() => repeat(str, count)).toThrow("Count must be a non-negative integer"); +}); From 2d04b9c94f7fd22906ba58a93e7601eb7481b225 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Fri, 14 Nov 2025 00:22:04 +0000 Subject: [PATCH 9/9] adding test to get-ordinal-number.test.js --- .../2-practice-tdd/get-ordinal-number.test.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js index 19488f2a9..8736a1508 100644 --- a/Sprint-3/2-practice-tdd/get-ordinal-number.test.js +++ b/Sprint-3/2-practice-tdd/get-ordinal-number.test.js @@ -11,5 +11,29 @@ test("append 'st' to numbers ending in 1, except those ending in 11", () => { expect( getOrdinalNumber(1) ).toEqual("1st"); expect( getOrdinalNumber(21) ).toEqual("21st"); expect( getOrdinalNumber(221) ).toEqual("221st"); + expect( getOrdinalNumber(11) ).toEqual("11th"); +}); + +test("append 'nd' to numbers ending in 2, except those ending in 12 ", () => { + expect( getOrdinalNumber(2) ).toEqual("2nd"); + expect( getOrdinalNumber(22) ).toEqual("22nd"); + expect( getOrdinalNumber(132) ).toEqual("132nd"); + expect( getOrdinalNumber(12) ).toEqual("12th"); +}); + +test("append 'rd' to numbers ending in 3, except those ending in 13", () => { + expect( getOrdinalNumber(3) ).toEqual("3rd"); + expect( getOrdinalNumber(33) ).toEqual("33rd"); + expect( getOrdinalNumber(133) ).toEqual("133rd"); + expect( getOrdinalNumber(13) ).toEqual("13th"); +}); + +test("appends 'th' to numbers ending in 4 - 9, and 0 ", () => { + expect(getOrdinalNumber(4)).toBe("4th"); + expect(getOrdinalNumber(15)).toBe("15th"); + expect(getOrdinalNumber(36)).toBe("36th"); + expect(getOrdinalNumber(57)).toBe("57th"); + expect(getOrdinalNumber(78)).toBe("78th"); + expect(getOrdinalNumber(10)).toBe("10th"); });