diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6b665aa --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} diff --git a/arrays.js b/arrays.js index 37faed2..6f165b1 100644 --- a/arrays.js +++ b/arrays.js @@ -15,10 +15,15 @@ Expected Output: */ // βοΈ Solve it here βοΈ +const inventory = ["Apples", "Bread", "Milk", "Eggs"]; +// 1. Add "Oranges" and "Bananas" to the inventory +inventory.push("Oranges", "Bananas"); +// 2. Remove the first item from the array +inventory.shift(); - - +// 3. Print the updated inventory +console.log("Updated inventory:", inventory); /* Task 2: Student Attendance Checker πβ @@ -39,11 +44,22 @@ Output: "Ali is present." */ // βοΈ Write your function here βοΈ +// Array of student names +const students = ["Ali", "Fatima", "Hassan", "Layla"]; +// 1. Function to check attendance +function isPresent(name) { + // 2. Check if the name exists in the array + if (students.includes(name)) { + return name + " is present"; + } else { + return name + " is absent"; + } +} - - - +// Example usage: +console.log(isPresent("Ali")); +console.log(isPresent("Zara")); /* Task 3: Top Scorers Leaderboard πβ½ @@ -66,13 +82,39 @@ Output: Sorted leaderboard with updated scores */ // βοΈ Write your functions here βοΈ +// Initial leaderboard +const topScorers = [ + { name: "Messi", score: 5 }, + { name: "Ronaldo", score: 3 }, + { name: "Neymar", score: 4 }, +]; - - - - - - +// 1. Function to update or add a player's score +function updateScore(playerName, addedScore) { + const player = topScorers.find((p) => p.name === playerName); + + if (player) { + player.score += addedScore; + } else { + topScorers.push({ name: playerName, score: addedScore }); + } +} + +// 2. Function to print sorted leaderboard +function printLeaderboard() { + // Sort in descending order of score + const sorted = [...topScorers].sort((a, b) => b.score - a.score); + + // Print the leaderboard + console.log("π Leaderboard:"); + sorted.forEach((player, index) => { + console.log(`${index + 1}. ${player.name} - ${player.score}`); + }); +} + +// Example usage +updateScore("Ronaldo", 2); +printLeaderboard(); /* STRETCH TASK: **The Ultimate Treasure Hunt** πΊοΈππ΄ββ οΈ @@ -139,3 +181,74 @@ Final Output: - "Congratulations! You found the ultimate treasure!" (if all conditions are met) */ +// 1. Check if a clue exists +function findClue(clues, name) { + if (clues.includes(name)) { + return `Clue ${name} found!`; + } else { + return `Clue ${name} is missing, search again!`; + } +} + +// 2. Decipher each clue message +function decipherMessage(clueMessages) { + const decoded = []; + for (let message of clueMessages) { + decoded.push(message.split("").reverse().join("")); + } + return decoded; +} + +// 3. Follow the steps on the treasure map +function followSteps(steps) { + for (let i = 0; i < steps.length; i++) { + if (steps[i] === "Danger") { + console.log("Stopped at danger. Cannot continue."); + return false; + } + console.log(`Step ${i + 1}: ${steps[i]}`); + } + return true; +} + +// 4. The ultimate treasure hunt logic +function ultimateTreasureHunt(clues, clueMessages, treasureMapSteps) { + let allCluesFound = true; + + // Check every clue + for (let clue of clues) { + const result = findClue(clues, clue); + console.log(result); + if (result.includes("missing")) { + allCluesFound = false; + } + } + + // Decode the clues + const decoded = decipherMessage(clueMessages); + console.log("Decoded messages:", decoded); + + // Follow the map + const journeySuccess = followSteps(treasureMapSteps); + + // Check the final step + const finalStep = treasureMapSteps[treasureMapSteps.length - 1]; + + // Final output + if (allCluesFound && journeySuccess && finalStep === "Treasure") { + console.log("π Congratulations! You found the ultimate treasure!"); + } else { + console.log("πͺ The treasure remains hidden. Try again!"); + } +} + +const clues = ["Map", "Compass", "Key", "Shovel"]; +const clueMessages = ["paM", "ssapmoC", "yeK", "levohS"]; +const treasureMapSteps = [ + "Start at the beach", + "Cross the forest", + "Climb the mountain", + "Treasure", +]; + +ultimateTreasureHunt(clues, clueMessages, treasureMapSteps); diff --git a/callbacks.js b/callbacks.js index 3fadb3f..7bb081d 100644 --- a/callbacks.js +++ b/callbacks.js @@ -17,9 +17,18 @@ Expected Output: */ // βοΈ Solve it here βοΈ +// Step 1: Define the callback function +function welcomeMessage(name) { + console.log(`Welcome, ${name}!`); +} +// // Step 2: Define the main function that takes name and callback +function sendMessage(userName, callback) { + callback(userName); +} - +// Step 3: Call the main function with name and callback +sendMessage("Amina", welcomeMessage); /* Task 2: Temperature Checker π‘οΈπ‘οΈπ‘οΈπ‘οΈ @@ -47,9 +56,26 @@ Expected Output: */ // βοΈ Solve it here βοΈ - - - +// Step 1: Define the callback function +function evaluateTemperature(temp) { + if (temp > 30) { + console.log(`${temp}Β°C is Hot.`); + } else if (temp >= 15 && temp <= 30) { + console.log(`${temp}Β°C is Warm.`); + } else { + console.log(`${temp}Β°C is Cold.`); + } +} + +// Step 2: Define the main function that accepts temp and callback +function checkTemperature(temperature, callback) { + callback(temperature); +} + +// Step 3: Test with different inputs +checkTemperature(35, evaluateTemperature); +checkTemperature(22, evaluateTemperature); +checkTemperature(10, evaluateTemperature); /* STRETCH: Task 3: Quiz Evaluator ππππ @@ -73,3 +99,20 @@ Expected Output: */ // βοΈ Solve it here βοΈ +// Step 1: Define the callback function +function checkUserAnswer(userAnswer, correctAnswer) { + if (userAnswer === correctAnswer) { + console.log("Correct!"); + } else { + console.log(`Incorrect. The correct answer is ${correctAnswer}.`); + } +} + +// Step 2: Define the main function +function evaluateAnswer(question, correctAnswer, callback) { + const userResponse = prompt(question); + callback(userResponse, correctAnswer); +} + +// Step 3: Use the function +evaluateAnswer("What is 5 + 5?", "10", checkUserAnswer); diff --git a/index.html b/index.html index 1104b64..08911c0 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,14 @@ -
Week 5 Assignment - -