Skip to content
This repository was archived by the owner on Jan 14, 2024. It is now read-only.
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
8 changes: 6 additions & 2 deletions extra/1-currency-conversion.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
Write a function that converts a price to USD (exchange rate is 1.4 $ to £)
*/

function convertToUSD() {}
function convertToUSD(amount) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! But could you be clearer with the name 'amount'?

return amount * 1.4;
}

/*
CURRENCY CONVERSION
Expand All @@ -15,7 +17,9 @@ function convertToUSD() {}
They have also decided that they should add a 1% fee to all foreign transactions, which means you only convert 99% of the £ to BRL.
*/

function convertToBRL() {}
function convertToBRL(amount) {
return parseFloat((amount * 0.99 * 5.7).toFixed(2));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a clever solution and I like your use of parseFloat, well done! However, it is not that readable. Could you break it down into steps - perhaps working out the price after fee first.

Also, could you be more specific with the labelling? i.e. instead of amount, GBP

}

/* ======= TESTS - DO NOT MODIFY =====
There are some Tests in this file that will help you work out if your code is working.
Expand Down
17 changes: 10 additions & 7 deletions extra/2-piping.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,29 @@
the final result to the variable goodCode
*/

function add() {

function add(a, b) {
return a + b;
}

function multiply() {

function multiply(a, b) {
return a * b;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice and tidy with spacing and semi-colon, well done :)

}

function format() {
function format(digit) {
return `£${digit.toString()}`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice thinking, but do you need the toString?


}

const startingValue = 2;

// Why can this code be seen as bad practice? Comment your answer.
let badCode =
let badCode = format((startingValue + 10) * 2);

Comment on lines +35 to +36

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you use all your methods in this bad code example?

// functions are not really used, so it would work just for one case

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The badcode is really hard to read and is doing too much on one line so is prone to bugs :)


/* BETTER PRACTICE */

let goodCode =
let goodCode = format(multiply(add(startingValue, 10), 2));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice getting this working on one line, but good code is readable in clear steps and stages. Can you break out these functions to call them on different lines?


/* ======= TESTS - DO NOT MODIFY =====
There are some Tests in this file that will help you work out if your code is working.
Expand Down
124 changes: 78 additions & 46 deletions extra/3-magic-8-ball.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,70 @@
/**

Let's peer into the future using a Magic 8 Ball!
https://en.wikipedia.org/wiki/Magic_8-Ball

There are a few steps to being able view the future though:
* Ask a question
* Shake the ball
* Get an answer
* Decide if it's positive or negative

The question can be anything, but the answers are fixed,
and have different levels of positivity or negativity.

Below are the possible answers:

## Very positive
It is certain.
It is decidedly so.
Without a doubt.
Yes - definitely.
You may rely on it.

## Positive
As I see it, yes.
Most likely.
Outlook good.
Yes.
Signs point to yes.

## Negative
Reply hazy, try again.
Ask again later.
Better not tell you now.
Cannot predict now.
Concentrate and ask again.

## Very negative
Don't count on it.
My reply is no.
My sources say no.
Outlook not so good.
Very doubtful.
*/
// /**

// Let's peer into the future using a Magic 8 Ball!
// https://en.wikipedia.org/wiki/Magic_8-Ball

// There are a few steps to being able view the future though:
// * Ask a question
// * Shake the ball
// * Get an answer
// * Decide if it's positive or negative

// The question can be anything, but the answers are fixed,
// and have different levels of positivity or negativity.

// Below are the possible answers:


let veryPositive = [

"It is certain.",
"It is decidedly so.",
"Without a doubt.",
"Yes - definitely.",
"You may rely on it."
]

let positive = [

"Positive",
"As I see it, yes.",
"Most likely.",
"Outlook good.",
"Yes.",
"Signs point to yes."
]

let negative = [

"Reply hazy, try again.",
"Ask again later.",
"Better not tell you now.",
"Cannot predict now.",
"Concentrate and ask again."
]

let veryNegative = [

"Don't count on it.",
"My reply is no.",
"My sources say no.",
"Outlook not so good.",
"Very doubtful."
]


// This should log "The ball has shaken!"
// and return the answer.

function shakeBall() {
//Write your code in here
}
console.log("The ball has shaken!");
// const allAnswers = veryPositive.concat(positive, negative, veryNegative);
const allAnswers = [...veryPositive, ...positive, ...negative, ...veryNegative];
let answer = allAnswers [Math.floor(Math.random()*allAnswers.length)];
// console.log(prediction);
return answer;

}

/*
This function should say whether the answer it is given is
Expand All @@ -59,9 +76,24 @@ function shakeBall() {
This function should expect to be called with any value which was returned by the shakeBall function.
*/
function checkAnswer(answer) {
if (veryPositive.indexOf(answer) >= 0 ) {
return "very positive";
//Write your code in here
} else if (positive.indexOf(answer) >= 0) {
return "positive";
} else if (negative.indexOf(answer) >= 0) {
return "negative";
} else {
return "very negative";
}


}


console.log(checkAnswer(shakeBall()));

@maxbmaapc maxbmaapc Feb 19, 2023

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
console.log(checkAnswer(shakeBall()));



/*
==================================
======= TESTS - DO NOT MODIFY =====
Expand Down
13 changes: 7 additions & 6 deletions mandatory/1-syntax-errors.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
// There are syntax errors in this code - can you fix it to pass the tests?

function addNumbers(a b c) {
function addNumbers(a, b, c) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

return a + b + c;
}

function introduceMe(name, age)
return `Hello, my {name}` is "and I am $age years old`;
function introduceMe(name, age) {
return `Hello, my name is ${name} and I am ${age} years old`;
}


function getTotal(a, b) {
total = a ++ b;

return "The total is total";
total = a + b;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice use of string interpolation

return `The total is ${total}`;
}

/*
Expand Down
8 changes: 4 additions & 4 deletions mandatory/2-logic-error.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
// The syntax for these functions is valid but there are some errors, find them and fix them

function trimWord(word) {
return wordtrim();
return word.trim();
}

function getStringLength(word) {
return "word".length();
return word.length;
}

function multiply(a, b, c) {
a * b * c;
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

watch this trailing space, keep it tidy :)

return a * b * c;
}

/*
Expand Down
4 changes: 4 additions & 0 deletions mandatory/3-function-output.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
function getRandomNumber() {
return Math.random() * 10;
}
// returns a random number between 0 (inclusive), and 1 (exclusive)

// Add comments to explain what this function does. You're meant to use Google!
function combine2Words(word1, word2) {
return word1.concat(word2);
}
// The concat() method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.

function concatenate(firstWord, secondWord, thirdWord) {
return firstWord.concat(" ", secondWord, " ", thirdWord);

// Write the body of this function to concatenate three words together.
// Look at the test case below to understand what this function is expected to return.
}
Expand Down
8 changes: 6 additions & 2 deletions mandatory/4-tax.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
Sales tax is 20% of the price of the product.
*/

function calculateSalesTax() {}
function calculateSalesTax(netPrice) {
return netPrice * 1.2;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if netprice is exactly correct to pass in (as I think netprice is after tax has been removed, and this is still before) but I like how specific and readable this label is.

}

/*
CURRENCY FORMATTING
Expand All @@ -17,7 +19,9 @@ function calculateSalesTax() {}
Remember that the prices must include the sales tax (hint: you already wrote a function for this!)
*/

function addTaxAndFormatCurrency() {}
function addTaxAndFormatCurrency(netPrice) {
return `£${calculateSalesTax(netPrice).toFixed(2)}`;
}

/*
===================================================
Expand Down