From 7f50bdeaadde9a5f1c688ea33d3846a427b2340b Mon Sep 17 00:00:00 2001 From: Amrit Biswal Date: Wed, 19 Nov 2025 15:07:43 +0100 Subject: [PATCH 1/2] Lab solved --- index.js | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 6b0fec3ad..2ad5c2990 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,97 @@ // Iteration 1: Names and Input - +const hacker1 = "Amrit"; +console.log(`The driver's name is ${hacker1}`); +const hacker2 = "Joshua"; +console.log(`The navigator's name is ${hacker2}`); // Iteration 2: Conditionals - +if (hacker1.length > hacker2.length) { + console.log(`The driver has the longest name, it has ${hacker1.length} characters.`); +} else if (hacker1.length < hacker2.length) { + console.log(`It seems that the navigator has the longest name, it has ${hacker2.length} characters.`); +}else { + console.log(`Wow, you both have equally long names, ${hacker1.length} characters!`); +} // Iteration 3: Loops +console.log("Shortcut approach: ", hacker1.toUpperCase().split('').join(' ')); +let hacker1Uppercase = ''; +for(let i = 0; i < hacker1.length; i++) { + hacker1Uppercase += (hacker1[i].toUpperCase() + ' '); +} +console.log("hacker1 name in uppercase with space: ", hacker1Uppercase); + +let hacker2Reversed = ''; +for(let i = hacker2.length - 1; i >= 0; i--) { + hacker2Reversed += hacker2[i]; +} +console.log("hacker2 name reversed: ", hacker2Reversed); + +if (hacker1.localeCompare(hacker2) < 0) { + console.log("The driver's name goes first."); +} else if (hacker1.localeCompare(hacker2) > 0) { + console.log("Yo, the navigator goes first definitely."); +} else { + console.log("What?! You both have the same name?"); +} + +// Bonus 1: Lorem ipsum generator +const longText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, +sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris +nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in +reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla +pariatur. Excepteur sint occaecat cupidatat non proident, +sunt in culpa qui officia deserunt mollit anim id est laborum.`; + +const words = longText.split(' '); +console.log(`Total number of words: ${words.length}`); + +let etCount = 0; +for (let i = 0; i < words.length; i++) { + if (words[i].toLowerCase().includes('et')) { + etCount += 1; + } +} +console.log(`Number of times the word "et" appears: ${etCount}`); + +// Bonus 2: Palindrome checker +const phraseToCheck = "A man, a plan, a canal, Panama!"; +// const cleanedPhrase = phraseToCheck.toLowerCase().replace(/[^a-z0-9]/g, ''); +const cleanedPhrase = phraseToCheck.toLowerCase().split('') + .filter(char => (char >= 'a' && char <= 'z') || (char >= '0' && char <= '9')).join(''); +console.log("Cleaned phrase: ", cleanedPhrase); + +let isPalindrome = true; +for (let i = 0; i < cleanedPhrase.length / 2; i++) { + if (cleanedPhrase[i] !== cleanedPhrase[cleanedPhrase.length - 1 - i]) { + isPalindrome = false; + break; + } +} +console.log(`Is the phrase "${phraseToCheck}" a palindrome? ${isPalindrome}`); + +function isPalindromeFunc(phrase) { + const cleaned = phrase.toLowerCase().split('') + .filter(char => (char >= 'a' && char <= 'z') || (char >= '0' && char <= '9')).join(''); + for (let i = 0; i < cleaned.length / 2; i++) { + if (cleaned[i] !== cleaned[cleaned.length - 1 - i]) { + return false; + } + } + return true; +} + +const testPhrases = [ + "A man, a plan, a canal, Panama!", + "Amor, Roma", + "race car", + "stack cats", + "step on no pets", + "taco cat", + "put it up", + `Was it a car or a cat I saw?" and "No 'x' in Nixon` ]; + +for (let phrase of testPhrases) { + console.log(`Is the phrase "${phrase}" a palindrome? ${isPalindromeFunc(phrase)}`); +} \ No newline at end of file From b9eb70c7d176f9590504d2e2af88b69056230300 Mon Sep 17 00:00:00 2001 From: Amrit Biswal Date: Thu, 20 Nov 2025 09:45:14 +0100 Subject: [PATCH 2/2] Lab updated --- index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/index.js b/index.js index 2ad5c2990..b816b7669 100644 --- a/index.js +++ b/index.js @@ -15,10 +15,16 @@ if (hacker1.length > hacker2.length) { // Iteration 3: Loops console.log("Shortcut approach: ", hacker1.toUpperCase().split('').join(' ')); + let hacker1Uppercase = ''; for(let i = 0; i < hacker1.length; i++) { + if (i === hacker1.length - 1) { + hacker1Uppercase += hacker1[i].toUpperCase(); + } else { hacker1Uppercase += (hacker1[i].toUpperCase() + ' '); + } } +hacker1Uppercase = hacker1Uppercase.trim(); // to remove trailing space console.log("hacker1 name in uppercase with space: ", hacker1Uppercase); let hacker2Reversed = '';