Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions Sprint-1/2-mandatory-errors/0.js
Original file line number Diff line number Diff line change
@@ -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?
//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?
3 changes: 2 additions & 1 deletion Sprint-1/2-mandatory-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// trying to create an age variable and then reassign the value by 1
// I changed for let

const age = 33;
let age = 33;
age = age + 1;
4 changes: 3 additions & 1 deletion Sprint-1/2-mandatory-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Currently trying to print the string "I was born in Bolton" but it isn't working...
// what's the error ?
// I have ti change the order

console.log(`I was born in ${cityOfBirth}`);
const cityOfBirth = "Bolton";
console.log(`I was born in ${cityOfBirth}`);

8 changes: 7 additions & 1 deletion Sprint-1/2-mandatory-errors/3.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const cardNumber = 4533787178994213;
/*const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);

// The last4Digits variable should store the last 4 digits of cardNumber
Expand All @@ -7,3 +7,9 @@ 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> The code will not works because slice is strigs and array and
cardNumber is number */
const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);


9 changes: 7 additions & 2 deletions Sprint-1/2-mandatory-errors/4.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
const 12HourClockTime = "20:53";
const 24hourClockTime = "08:53";
/*const 12HourClockTime = "20:53";
const 24hourClockTime = "08:53";
*/

//Answer:
const Hour12ClockTime = "20:53";
const hour24ClockTime = "08:53";
20 changes: 19 additions & 1 deletion Sprint-1/3-mandatory-interpret/1-percentage-change.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
let carPrice = "10,000";
/*let carPrice = "10,000";
let priceAfterOneYear = "8,543";

carPrice = Number(carPrice.replaceAll(",", ""));
Expand All @@ -12,11 +12,29 @@ 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
/* carPrice.replaceAll(",", "") línea 4
Number(carPrice.replaceAll(",", "")) línea 4
priceAfterOneYear.replaceAll("," "") línea 5
Number(priceAfterOneYear.replaceAll("," "")) línea 5
console.log(...) línea 9
Total> 5 calls

// 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?

is missing coma
console.log(...) in line 9

// c) Identify all the lines that are variable reassignment statements
carPrice = Number(carPrice.replaceAll(",", "")); in line 4
priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); in line 5

// d) Identify all the lines that are variable declarations

let carPrice = "10,000"; línea 1
let priceAfterOneYear = "8,543"; línea 2
const priceDifference = carPrice - priceAfterOneYear; línea 6
const percentageChange = (priceDifference / carPrice) * 100; línea 7

// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression?
become a price that is string with comas fixed ready to run and show the %
*/
22 changes: 22 additions & 0 deletions Sprint-1/3-mandatory-interpret/2-time-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,37 @@ 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 variables
movieLength
remainingSeconds
totalMinutes
remainingMinutes
totalHours
result

// b) How many function calls are there?
1 call
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 the modulo operator.
It returns the remainder of dividing movieLength by 60.
In this case: it calculates how many seconds are left over after counting the full minutes.

// d) Interpret line 4, what does the expression assigned to totalMinutes mean?

First, subtract the remaining seconds to get only the whole seconds in minutes. Then, divide by 60 to convert seconds to whole minutes.

// e) What do you think the variable result represents? Can you think of a better name for this variable?

The result contains a string in the format: hours:minutes:seconds
movieDurationString


// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer

It works for positive numbers of seconds. */
19 changes: 18 additions & 1 deletion Sprint-1/3-mandatory-interpret/3-to-pounds.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const penceString = "399p";
/*const penceString = "399p";

const penceStringWithoutTrailingP = penceString.substring(
0,
Expand All @@ -25,3 +25,20 @@ 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);
Use .substring(start, end) to remove the last character (p) from the string.
penceString.length - 1 index of the last character excluding p
3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0");
Use .padStart(targetLength, "0") to ensure the chain has at least 3
4. `const pounds = paddedPenceNumberString.substring(0, paddedPenceNumberString.length - 2);`

`Extracts the digits from the pounds.` `paddedPenceNumberString.length - 2` → leaves the last two digits for the pence.`
5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2).padEnd(2, "0");

.substring(start) takes the last two characters, which represent the penny

.padEnd(2, "0") ensures there are always two digits, padding with 0 if necessary
6. console.log(£${pounds}.${pence});

Builds a string in the standard price format: £pounds.pence

11 changes: 9 additions & 2 deletions Sprint-3/2-mandatory-rewrite/1-get-angle-type.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
function getAngleType(angle) {
/* function getAngleType(angle) {
if (angle === 90) return "Right angle";
// replace with your completed function from key-implement

}
} */

function getAngleType(angle) {
if (angle === 90) return "Right angle";
if (angle < 90) return "Acute angle";
if (angle > 90 && angle < 180) return "Obtuse angle";
if (angle === 180) return "Straight angle";
if (angle > 180 && angle < 360) return "Reflex angle";



Expand Down
12 changes: 10 additions & 2 deletions Sprint-3/2-mandatory-rewrite/1-get-angle-type.test.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
const getAngleType = require("./1-get-angle-type");
/*const getAngleType = require("./1-get-angle-type");

test("should identify right angle (90°)", () => {
expect(getAngleType(90)).toEqual("Right angle");
});
});*/


function getAngleType(angle) {
if (angle === 90) return "Right angle";
if (angle < 90) return "Acute angle";
if (angle > 90 && angle < 180) return "Obtuse angle";
if (angle === 180) return "Straight angle";
if (angle > 180 && angle < 360) return "Reflex angle";

// REPLACE the comments with the tests
// make your test descriptions as clear and readable as possible
Expand Down
12 changes: 12 additions & 0 deletions Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,16 @@ function isProperFraction(numerator, denominator) {
// add your completed function from key-implement here
}

module.exports = isProperFraction;

/* ANSWER*/
function isProperFraction(numerator, denominator) {
if (numerator < denominator) return true;
if (numerator > denominator) return false;
if (numerator < denominator) return true;
if (numerator === denominator) return false;
if (numerator < denominator) return true;
if (numerator = denominator) return true;
}

module.exports = isProperFraction;
23 changes: 23 additions & 0 deletions Sprint-3/2-mandatory-rewrite/2-is-proper-fraction.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,26 @@ test("should return true for a proper fraction", () => {
// Case 3: Identify Negative Fractions:

// Case 4: Identify Equal Numerator and Denominator:

/*ANSWER*/
const isProperFraction = require("./2-is-proper-fraction");

test("should return true for a proper fraction", () => {
expect(isProperFraction(2, 3)).toEqual(true);
});

// Case 2: Identify Improper Fractions:
test("should return false for improper fractions", () => {
expect(isProperFraction(3, 2)).toEqual(false);
});

// Case 3: Identify Negative Fractions:
test("should handle negative fractions correctly", () => {
expect(isProperFraction(-2, -3)).toEqual(false);
});

// Case 4: Identify Equal Numerator and Denominator:
test("should return false when numerator equals denominator", () => {
expect(isProperFraction(3, 3)).toEqual(false);
});

15 changes: 15 additions & 0 deletions Sprint-3/2-mandatory-rewrite/3-get-card-value.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,19 @@ function getCardValue(card) {
// replace with your code from key-implement
return 11;
}
module.exports = getCardValue;

//ANSWER
function getCardValue(card) {
const rank = card.slice(0, -1); // remove the last character (suit emoji)

if (rank === "A") return 11;
if (["J", "Q", "K", "10"].includes(rank)) return 10;

const num = parseInt(rank);
if (num >= 2 && num <= 9) return num;

throw new Error("Invalid card rank.");
}

module.exports = getCardValue;
31 changes: 31 additions & 0 deletions Sprint-3/2-mandatory-rewrite/3-get-card-value.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,34 @@ test("should return 11 for Ace of Spades", () => {
// Case 3: Handle Face Cards (J, Q, K):
// Case 4: Handle Ace (A):
// Case 5: Handle Invalid Cards:

/*answer*/
const getCardValue = require("./3-get-card-value");

test("should return 11 for Ace of Spades", () => {
const aceOfSpades = getCardValue("A♠");
expect(aceOfSpades).toEqual(11);
});

// Case 2: Handle Number Cards (2-10):
test("should return correct value for number cards", () => {
expect(getCardValue("2♠")).toEqual(2);
expect(getCardValue("10♠")).toEqual(10);
});

// Case 3: Handle Face Cards (J, Q, K):
test("should return 10 for face cards", () => {
expect(getCardValue("J♠")).toEqual(10);
expect(getCardValue("Q♥")).toEqual(10);
expect(getCardValue("K♣")).toEqual(10);
});

// Case 4: Handle Ace (A):
test("should return 11 for any Ace", () => {
expect(getAngleType("A♥")).toEqual(11);
});

// Case 5: Handle Invalid Cards:
test("should throw error for invalid cards", () => {
expect(() => getCardValue("1♠")).toThrow('Invalid card rank.');
});