diff --git a/week-3/2-mandatory/1-oxygen-levels.js b/week-3/2-mandatory/1-oxygen-levels.js index f9d745f..343304b 100644 --- a/week-3/2-mandatory/1-oxygen-levels.js +++ b/week-3/2-mandatory/1-oxygen-levels.js @@ -9,43 +9,39 @@ To be safe to land on, a planet needs to have an Oxygen level between 19.5% and Write a function that finds the first safe oxygen level in the array - Oxygen between 19.5% and 23.5% */ -function safeLevels() { - +function safeLevels(oxygenLevel) { + return oxygenLevel.find(planet); } +function planet(safePlanet) { + if (parseFloat(safePlanet) > 19.5 && parseFloat(safePlanet) < 23.5) { + return `${safePlanet}%`; + // return safePlanet + "%"; + } +} /* ======= TESTS - DO NOT MODIFY ===== */ const oxygenLevels1 = ["24.2%", "11.3%", "19.9%", "23.1%", "29.3%", "20.2%"]; const oxygenLevels2 = ["30.8%", "23.5%", "18.8%", "19.5%", "20.2%", "31.6%"]; const oxygenLevels3 = ["200%", "21.1%"]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (actual === expected) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (actual === expected) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } -test( - "safeLevels function works - case 1", - safeLevels(oxygenLevels1), - "19.9%" -); - -test( - "safeLevels function works - case 2", - safeLevels(oxygenLevels2), - "20.2%" -); - -test( - "safeLevels function works - case 3", - safeLevels(oxygenLevels3), - "21.1%" -); +test("safeLevels function works - case 1", safeLevels(oxygenLevels1), "19.9%"); + +test("safeLevels function works - case 2", safeLevels(oxygenLevels2), "20.2%"); + +test("safeLevels function works - case 3", safeLevels(oxygenLevels3), "21.1%"); diff --git a/week-3/2-mandatory/2-bush-berries.js b/week-3/2-mandatory/2-bush-berries.js index aca45ad..f1bfed8 100644 --- a/week-3/2-mandatory/2-bush-berries.js +++ b/week-3/2-mandatory/2-bush-berries.js @@ -10,26 +10,39 @@ Use the tests to confirm which message to return */ -function bushChecker() { +function bushChecker(allBushBerryColours) { + var checkResult = allBushBerryColours.every(checkColour); + if (checkResult === true) { + return "Bush is safe to eat from"; + } else { + return "Toxic! Leave bush alone!"; + } +} +function checkColour(berryColour) { + if (berryColour === "pink") { + return true; + } } /* ======= TESTS - DO NOT MODIFY ===== */ -let bushBerryColours1 = ["pink", "pink", "pink", "neon", "pink", "transparent"] -let bushBerryColours2 = ["pink", "pink", "pink", "pink"] +let bushBerryColours1 = ["pink", "pink", "pink", "neon", "pink", "transparent"]; +let bushBerryColours2 = ["pink", "pink", "pink", "pink"]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (actual === expected) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (actual === expected) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } test( diff --git a/week-3/2-mandatory/3-space-colonies.js b/week-3/2-mandatory/3-space-colonies.js index 239eddd..aea0cf2 100644 --- a/week-3/2-mandatory/3-space-colonies.js +++ b/week-3/2-mandatory/3-space-colonies.js @@ -8,8 +8,14 @@ NOTE: don't include any element that is not a "family". */ -function colonisers() { +function colonisers(stayingFamilies) { + var stayingFamilies = stayingFamilies.filter(selectedFamilies); + return stayingFamilies; + // console.log(stayingFamilies); +} +function selectedFamilies(familyNames) { + return familyNames.includes("family") && familyNames.charAt(0) === "A"; } /* ======= TESTS - DO NOT MODIFY ===== */ @@ -26,24 +32,26 @@ const voyagers = [ "Asimov", "Oscar family", "Avery family", - "Archer family" + "Archer family", ]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (util.isDeepStrictEqual(actual, expected)) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (util.isDeepStrictEqual(actual, expected)) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } -test( - "colonisers function works", - colonisers(voyagers), - ["Adam family", "Avery family", "Archer family"] -) +test("colonisers function works", colonisers(voyagers), [ + "Adam family", + "Avery family", + "Archer family", +]); diff --git a/week-3/2-mandatory/4-eligible-students.js b/week-3/2-mandatory/4-eligible-students.js index d8fe052..04f83ad 100644 --- a/week-3/2-mandatory/4-eligible-students.js +++ b/week-3/2-mandatory/4-eligible-students.js @@ -4,11 +4,17 @@ Create a function which: - Accepts an array which contains all the students' names and their attendance counts (see tests to confirm how this data will be structured) - - Returns an array containing only the names of the who have attended AT LEAST 8 classes + - Returns an array containing only the names of the students who have attended AT LEAST 8 classes */ -function eligibleStudents() { - +function eligibleStudents(studentWork) { + let studentsWhoCanSitExam = []; + for (i = 0; i < studentWork.length; i++) { + if (studentWork[i][1] >= 8) { + studentsWhoCanSitExam.push(studentWork[i][0]); + } + } + return studentsWhoCanSitExam; } /* ======= TESTS - DO NOT MODIFY ===== */ @@ -19,23 +25,27 @@ const attendances = [ ["Elamin", 6], ["Adam", 7], ["Tayoa", 11], - ["Nina", 10] -] + ["Nina", 10], +]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (util.isDeepStrictEqual(actual, expected)) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (util.isDeepStrictEqual(actual, expected)) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } -test("eligibleStudents function works", - eligibleStudents(attendances), - ["Ahmed", "Clement", "Tayoa", "Nina"] -); +test("eligibleStudents function works", eligibleStudents(attendances), [ + "Ahmed", + "Clement", + "Tayoa", + "Nina", +]); diff --git a/week-3/2-mandatory/5-journey-planner.js b/week-3/2-mandatory/5-journey-planner.js index 816637d..c2529a7 100644 --- a/week-3/2-mandatory/5-journey-planner.js +++ b/week-3/2-mandatory/5-journey-planner.js @@ -7,7 +7,14 @@ NOTE: only the names should be returned, not the means of transport. */ -function journeyPlanner() { +function journeyPlanner(londonLocations, meansOfTransport) { + let availableLocations = []; + for (i = 0; i < londonLocations.length; i++) { + if (londonLocations[i].includes(meansOfTransport)) { + availableLocations.push(londonLocations[i][0]); + } + } + return availableLocations; } /* ======= TESTS - DO NOT MODIFY ===== */ @@ -17,19 +24,21 @@ const londonLocations = [ ["Greenwich", "bus", "river boat", "dlr", "air line", "tube"], ["London Bridge", "tube", "river boat"], ["Tower Bridge", "tube", "bus"], -] +]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (util.isDeepStrictEqual(actual, expected)) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (util.isDeepStrictEqual(actual, expected)) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } test( diff --git a/week-3/2-mandatory/6-lane-names.js b/week-3/2-mandatory/6-lane-names.js index ef4e1c5..b2b99f8 100644 --- a/week-3/2-mandatory/6-lane-names.js +++ b/week-3/2-mandatory/6-lane-names.js @@ -4,35 +4,41 @@ Write a function that will return all street names which contain 'Lane' in their name. */ -function getLanes() { +function lane(streetNamesIncludingLane) { + return streetNamesIncludingLane.includes("Lane"); +} +function getLanes(streetNames) { + let result = streetNames.filter(lane); + return result; } /* ======= TESTS - DO NOT MODIFY ===== */ const streetNames = [ - "Abchurch Lane", - "Adam's Court", - "Addle Hill", - "Addle Lane", - "Alban Highwalk" -] + "Abchurch Lane", + "Adam's Court", + "Addle Hill", + "Addle Lane", + "Alban Highwalk", +]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (util.isDeepStrictEqual(actual, expected)) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } - - console.log(`${test_name}: ${status}`); + let status; + if (util.isDeepStrictEqual(actual, expected)) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } + + console.log(`${test_name}: ${status}`); } -test( - "getLanes function works", - getLanes(streetNames), - ["Abchurch Lane", "Addle Lane"] -); +test("getLanes function works", getLanes(streetNames), [ + "Abchurch Lane", + "Addle Lane", +]); diff --git a/week-3/2-mandatory/7-password-validator.js b/week-3/2-mandatory/7-password-validator.js index 8f9e597..c9563c6 100644 --- a/week-3/2-mandatory/7-password-validator.js +++ b/week-3/2-mandatory/7-password-validator.js @@ -22,33 +22,68 @@ PasswordValidationResult= [false, false, false, false, true] */ -function validatePasswords(passwords) { +function fiveOrMoreCharacters(passwordString) { + return passwordString.length >= 5; +} + +function containsUpperCase(password) { + let regex = /[A-Z]/; + return regex.test(password); +} + +function containsLowerCase(password) { + let regex = /[a-z]/; + return regex.test(password); +} + +function containsNumbers(password) { + let regex = /[0-9]/; + return regex.test(password); +} + +function containsSymbols(password) { + let regex = /[^!#$%.*&]/; + return regex.test(password); +} +function containsRepeat(password) { + let regex = /[^password]/; + return regex.test(password); +} + +function validatePasswords(passwords) { + return passwords.map(password => fiveOrMoreCharacters(password) + && containsUpperCase(password) + && containsLowerCase(password) + && containsNumbers(password) + && containsSymbols(password)); } /* ======= TESTS - DO NOT MODIFY ===== */ -const passwords1 = ["Se%5", "TktE.TJTU", "384#HsHF", "dvyyeyy!5", "tryT3729"] -const passwords2 = ["StUFf27%", "Pl3nty!", "Jai33", "shajsaUA**&&", "Pl3nty!"] +const passwords1 = ["Se%5", "TktE.TJTU", "384#HsHF", "dvyyeyy!5", "tryT3729"]; +const passwords2 = ["StUFf27%", "Pl3nty!", "Jai33", "shajsaUA**&&", "Pl3nty!"]; -const util = require('util'); +const util = require("util"); function test(test_name, actual, expected) { - let status; - if (util.isDeepStrictEqual(actual, expected)) { - status = "PASSED"; - } else { - status = `FAILED: expected: ${util.inspect(expected)} but your function returned: ${util.inspect(actual)}`; - } + let status; + if (util.isDeepStrictEqual(actual, expected)) { + status = "PASSED"; + } else { + status = `FAILED: expected: ${util.inspect( + expected + )} but your function returned: ${util.inspect(actual)}`; + } - console.log(`${test_name}: ${status}`); + console.log(`${test_name}: ${status}`); } test( "validatePasswords function works - case 1", validatePasswords(passwords1), [false, false, true, false, false] - ); +); test( "validatePasswords function works - case 2",