Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
72a2114
add comment explaining what like 3 is doing
vmoratti Jun 10, 2026
e988493
use string indexing to get the initials
vmoratti Jun 10, 2026
541c57c
figure out what (num) represents, add comment
vmoratti Jun 12, 2026
2c05e7e
solve the slicing proble,create dir variabe and ext variable
vmoratti Jun 12, 2026
0a2e2ac
answer the question in the exercse
vmoratti Jun 12, 2026
697ddfc
change const to let, add comment
vmoratti Jun 12, 2026
704b717
fix the error, comment on it
vmoratti Jun 12, 2026
4c49b91
add question in comments
vmoratti Jun 13, 2026
6003611
fix problem
vmoratti Jun 14, 2026
06ed7a8
answer all the questions in the exercise
vmoratti Jun 14, 2026
a6d738a
Answer questions in the exercise
vmoratti Jun 15, 2026
c00ebcd
add comments to explain code
vmoratti Jun 15, 2026
c89d0c3
can't undestand instructions
vmoratti Jun 15, 2026
c1f0514
answer questions in objects.md
vmoratti Jun 15, 2026
71235b3
solve the code error message
vmoratti Jun 24, 2026
fa98548
fix proble, answer questions
vmoratti Jun 25, 2026
4b743c8
fix code, explain fix
vmoratti Jun 25, 2026
4919640
fix code, write explanation
vmoratti Jun 25, 2026
6a9bf82
explain and fix code
vmoratti Jun 25, 2026
9560e8d
explain and fix the code
vmoratti Jun 25, 2026
6187040
create function to calculate BMI
vmoratti Jun 25, 2026
82a2abd
implement function for UPPER_SNAKE
vmoratti Jun 25, 2026
ca2e82e
implement function to convert to pounds
vmoratti Jun 26, 2026
c81c5df
Answer questions
vmoratti Jun 28, 2026
301c8f1
write tests, fix bugs
vmoratti Jun 29, 2026
9ccd193
edit comment
vmoratti Jun 30, 2026
3a491f5
Delete Sprint-1/1-key-exercises/1-count.js
vmoratti Jun 30, 2026
9c5bcd0
Delete Sprint-1/4-stretch-explore/objects.md
vmoratti Jun 30, 2026
eb98abb
Delete Sprint-1/4-stretch-explore/chrome.md
vmoratti Jun 30, 2026
2d44b64
Delete Sprint-1/2-mandatory-errors/2.js
vmoratti Jun 30, 2026
ce208ae
Delete Sprint-1/2-mandatory-errors/4.js
vmoratti Jun 30, 2026
e042ab7
Delete Sprint-1/1-key-exercises/2-initials.js
vmoratti Jun 30, 2026
19f6b35
Delete Sprint-1/1-key-exercises/3-paths.js
vmoratti Jun 30, 2026
2c2aeee
Delete Sprint-1/1-key-exercises/4-random.js
vmoratti Jun 30, 2026
d43c9fa
Delete Sprint-1/2-mandatory-errors/1.js
vmoratti Jun 30, 2026
b68e8ad
Delete Sprint-1/2-mandatory-errors/0.js
vmoratti Jun 30, 2026
712fb63
Delete Sprint-1/2-mandatory-errors/3.js
vmoratti Jun 30, 2026
c10a299
Delete Sprint-1/3-mandatory-interpret/1-percentage-change.js
vmoratti Jun 30, 2026
5a6b4c4
Delete Sprint-1/3-mandatory-interpret/2-time-format.js
vmoratti Jun 30, 2026
8ccb9f5
Delete Sprint-1/3-mandatory-interpret/3-to-pounds.js
vmoratti Jun 30, 2026
705c3e2
fix sprint-1 files
vmoratti Jul 4, 2026
c56be30
Fix comment formatting in calculateBMI function
vmoratti Jul 6, 2026
6fedd2a
Refactor time formatting and update test cases
vmoratti Jul 6, 2026
1b5fc8a
Modify calculateBMI to return only BMI value
vmoratti Jul 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions Sprint-2/1-key-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// Predict and explain first...
// =============> write your prediction here

// call the function capitalise with a string input
// Well, I think the variable "str" is being declared twice, so the code will
// through an error message.
//
//call the function capitalise with a string input
// interpret the error message and figure out why an error is occurring

function capitalise(str) {
Expand All @@ -10,4 +12,12 @@ function capitalise(str) {
}

// =============> write your explanation here
//The variable "str" has been used as a parameter for the capitalise function
//and also been declared again inside the function. I think if "let" is removed
//the code will work.
// =============> write your new code here
function capitalise(str) {
str = `${str[0].toUpperCase()}${str.slice(1)}`;
return str;
}
console.log(capitalise("sorted"));
28 changes: 24 additions & 4 deletions Sprint-2/1-key-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,40 @@
// Predict and explain first...

// Why will an error occur when this program runs?
// =============> write your prediction here

// I think there will be an error as "decimalNumber" variable has already been declared as a parameter in
// "convertToPercentage" function
//
// 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
// =============Explanation ===============
// the "decimalNumber" variable is a local variable and can only be seen inside "convertToPercentage" function
// therefore when called outside the function it triggers "ReferenceError"

// Finally, correct the code to fix the problem
// =========correction=========
// problem can be fixed by moving the variable declaration outside the function
// and making it global

// =============> write your new code here

const decimalNumber = 0.5;
function convertToPercentage(decimalNumber) {
const percentage = `${decimalNumber * 100}%`;

return percentage;
}

console.log(decimalNumber);
console.log(convertToPercentage(decimalNumber));


22 changes: 13 additions & 9 deletions Sprint-2/1-key-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@

// Predict and explain first BEFORE you run any code...

// this function should square any number but instead we're going to get an error

// =============> write your prediction of the error here

function square(3) {
//=========Prediction=============
// I think there will not be en error till we call the function.
/*function square(num) {
return num * num;
}

console.log(square(5))*/
// =============> write the error message here

// Unexpected number
// =============> explain this error message here

// I think it function expects parameter as a variable rather than a number.
// Finally, correct the code to fix the problem

// ===========correction=========
// to correct the code we need to introduce parameter as a variable, rather than a number.
// that way any number can be passed when function is called.
// =============> write your new code here


function square(num) {
return num * num;
}
console.log(square(5));
19 changes: 15 additions & 4 deletions Sprint-2/2-mandatory-debug/0.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
// Predict and explain first...

// =============> write your prediction here

function multiply(a, b) {
//===========Prediction=======
// I think the code will not produce the desired result as the function is not returning any value
/*function multiply(a, b) {
console.log(a * b);
}

console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);
console.log(multiply(3, 5));
typeof(multiply(3, 4));*/

// =============> write your explanation here

//===============Explanation=========
// The function itself prints out the result, but the result has no (type) as such and can not be used as
// a data type.
//
// Finally, correct the code to fix the problem
//============correction============
// To correct the code "return" needs to be introduced.
// =============> 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)}`);
14 changes: 12 additions & 2 deletions Sprint-2/2-mandatory-debug/1.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
// Predict and explain first...
// =============> write your prediction here

// =============explanation==========
// I think will either give error, or no result at all as there is a ";" semicolon after
// the return statement and the actual calculation is not assigned to anything.
function sum(a, b) {
return;
a + b;
a + b;
}

console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);

// =============> write your explanation here
//==============Explanation===============
//To fix the code the ";" must be removed, and the calculation
//needs to be placed next to the "return"
// 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)}`);
22 changes: 22 additions & 0 deletions Sprint-2/2-mandatory-debug/2.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

// Predict the output of the following code:
// =============> Write your prediction here
//============Prediction========
// I think the code output will be "3" in al three cases as "num variable is declared outside the function and
// not used as a parameter for the function"

const num = 103;

Expand All @@ -14,11 +17,30 @@ 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
// prediction matched
// =============> 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
//===============Explanation===========
// The variable is not used as a parameter of the function, and therefore
// is ignored when passed inside function call.
// Finally, correct the code to fix the problem
//
// =============> write your new code here
//const num = 103;

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
// =============explanation==================
// The variable is not used as a parameter of the function, and therefore
// is ignored when passed inside function call.
9 changes: 6 additions & 3 deletions Sprint-2/3-mandatory-implement/1-bmi.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
// Given someone's weight in kg and height in metres
// 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) {
// return the BMI of someone based off their weight and height
}
let bmi = weight / (height **2 )// weight divided by height squared.
return bmi.toFixed(1)// toFixed(1) insures that result is displayed with 1 decimal place
}
//
console.log(calculateBMI(87, 1.86))
8 changes: 8 additions & 0 deletions Sprint-2/3-mandatory-implement/2-cases.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,11 @@
// 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 upper_snake_case(word) {
let new_word = word.toUpperCase();// capitalises string
let split_word = new_word.split(" ");// turns string into array in order to to use "join()" method
let joined_word = split_word.join("_")// joins strings with "_" to make it UPPER_SNAKE
return joined_word;
}
console.log(upper_snake_case("hello there"));
34 changes: 34 additions & 0 deletions Sprint-2/3-mandatory-implement/3-to-pounds.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,37 @@
// 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(penceString) {
const penceStringWithoutTrailingP = penceString.substring(
0,
penceString.length - 1
); //variable
// "penceStringWithoutTrailingP" declared and assigned first three characters
// of "penceString" using the substring method, removing the trailing "p".

const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0");
// variable "paddedPenceNumberString" declared and assigned the value of "penceStringWithoutTrailingP"
// padded to a minimum length of 3 characters with leading zeros using the padStart method. Which is clever way,
// really to replace it with zeros if number of pence is less than 3 characters long.

const pounds = paddedPenceNumberString.substring(
0,
paddedPenceNumberString.length - 2
);
//Variable "pounds" declared and assigned value of "paddedPenceNumberString" but without the last
// two characters.

const pence = paddedPenceNumberString
.substring(paddedPenceNumberString.length - 2)
.padEnd(2, "0");
// Variable "pence" declared and assigned value of the last two characters of "paddedPenceNumberString"
// and padded to a minimum length of 2 characters with zeros at the end, padEnd method is used once again.
// it is to ensure that if the number of pence is less than 2 characters long, it will be padded with zeros
// at the end.

return `£${pounds}.${pence}`;
// Finally equivalent in "pounds" and "pence" is returned
}
console.log(toPounds("2345")); // testing with normal string of numbers
console.log(toPounds("-2345")); // testing with string of negative numbers
console.log(toPounds("0")); // testing with zero
10 changes: 10 additions & 0 deletions Sprint-2/4-mandatory-interpret/time-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,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
Expand All @@ -22,17 +23,26 @@ function formatTimeDisplay(seconds) {

// a) When formatTimeDisplay is called how many times will pad be called?
// =============> write your answer here
// Answer to a) : when "formatTimeDisplay" is called "pad" is called 3 times

// 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
// Answer to b) : value assigned to num when pad is called for the first time is 0 - zero

// c) What is the return value of pad is called for the first time?
// =============> write your answer here
// Answer to c) : the return value on pad is the "numString" variable, which is string "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
// Answer to d) : Value assigned to "num" the last time "pad" is called is 1, one.
// "num" in this case is a variable "remainingSeconds", which is a remainder of "seconds" (61)
// variable divided by 60, which is 1.

// e) What is the return value of pad when it is called for the last time in this program? Explain your answer
// =============> write your answer here
// Answer to e) : The return value of "pad" the last time pad called is the variable "numString"
// which is - string "01". "toString" variable is a "num" converted to a string earlier in the function
// and makes it double digit string.
69 changes: 58 additions & 11 deletions Sprint-2/5-stretch-extend/format-time.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,72 @@
// This is the latest solution to the problem from the prep.
// Make sure to do the prep before you do the coursework
// Your task is to write tests for as many different groups of input data or edge cases as you can, and fix any bugs you find.
// Your task is to write tests for as many different groups of input data or edge cases as you can, and fix any
// bugs you find.

// This is the latest solution to the problem from the prep.
// Make sure to do the prep before you do the coursework
// Your task is to write tests for as many different groups of input data or edge cases as you can, and fix any
// bugs you find.

function formatAs12HourClock(time) {
const hours = Number(time.slice(0, 2));
if (hours > 12) {
return `${hours - 12}:00 pm`;
}
return `${time} am`;
const hours = Number(time.slice(0, 2)); // "hours" variable represents first two digits of the time string turned into number
const minutes = Number(time.slice(-2));// "mninutes" variable represents last two digits of the "time" string converted to number
if (hours === 12) {
return `${time}pm` // if time is "12:00" it will show
//12:00 pm
} else if (hours === 24 && time.slice(-2) === "00") {
return `00:00am`;
} else if (hours === 24 && minutes > 0) {
return `00:${minutes}am`

}else if (hours > 12) {
return `${hours - 12}:${minutes}pm`;
}
return `${time}am`;
}

const currentOutput = formatAs12HourClock("08:00");
const targetOutput = "08:00 am";
const targetOutput = "08:00am";
console.assert(
currentOutput === targetOutput,
`current output: ${currentOutput}, target output: ${targetOutput}`
);

const currentOutput2 = formatAs12HourClock("23:00");
const targetOutput2 = "11:00 pm";
const currentOutput2 = formatAs12HourClock("23:35");
const targetOutput2 = "11:35pm";
console.assert(
currentOutput2 === targetOutput2,
`current output: ${currentOutput2}, target output: ${targetOutput2}`
`current output2: ${currentOutput2}, target output2: ${targetOutput2}`
);
const currentOutput3 = formatAs12HourClock("00:00");//
Comment thread
LonMcGregor marked this conversation as resolved.
const targetOutput3 = "00:00am";// expecting new test to return "00:00 am"
console.assert(
currentOutput3 === targetOutput3,
`current output3: ${currentOutput3}, target output3: ${targetOutput3}`
); // if currentOutput3 and targetOutput3 do not match, the assertion message will be given.

const currentOutput4 = formatAs12HourClock("12:00");//
const targetOutput4 = "12:00pm"; // expected output for "12:00" is "12:00 pm"
console.assert(
currentOutput4 === targetOutput4,
`current output4: ${currentOutput4}, target output4: ${targetOutput4}`
);// if currentOutput and targetOutput do not match, the assertion message will be given.
const currentOutput5 = formatAs12HourClock("24:00");
const targetOutput5 = "00:00am";
console.assert(
currentOutput5 === targetOutput5,
`current output5: ${currentOutput5}, target output5: ${targetOutput5}`
); // if 24:00 is entered and the output is not "00:00 am" the assertion message will be given

// below is test to try with minutes
const currentOutput6 = formatAs12HourClock("22:55");
const targetOutput6 = "10:55pm";
console.assert(currentOutput6 === targetOutput6, `current outpu6: ${currentOutput6}, target output6: ${targetOutput6}`);

// following test tests what happens if time passed 24:00 hours.
const currentOutput7 = formatAs12HourClock("24:25");
const targetOutput7 = "00:25am";
console.assert(currentOutput7 === targetOutput7, `current output7: ${currentOutput7}, target output: ${targetOutput7}`)




1 change: 1 addition & 0 deletions Sprint-2/Project-CLI-Treasure-Hunt
Submodule Project-CLI-Treasure-Hunt added at 3e6646
Loading