diff --git a/task-1/book.js b/task-1/book.js index 8b49ecc..118512e 100644 --- a/task-1/book.js +++ b/task-1/book.js @@ -1,3 +1,20 @@ function isBookApplicable(searchString) { - // Your code here -} + + // Normalize the search string: trim whitespace and convert to lowercase + const normalizedSearch = searchString.trim().toLowerCase(); + + // Define the book title and convert to lowercase + const bookTitle = "The fundamentals of JavaScript".toLowerCase(); + + // Check if the book title contains the search string + return bookTitle.includes(normalizedSearch); +} + +// Test +console.log(isBookApplicable("javascript")); +console.log(isBookApplicable("javascript ")); +console.log(isBookApplicable("python")); +console.log(isBookApplicable("JavaScript")); +console.log(isBookApplicable("JAVASCRIPT")); + + diff --git a/task-2/parse-date.js b/task-2/parse-date.js index 877a3aa..863b80d 100644 --- a/task-2/parse-date.js +++ b/task-2/parse-date.js @@ -1 +1,38 @@ -// Your code here +function parseDateString(dateString) { + const [format, dateValues] = dateString.split(" "); // split by space + const parts = dateValues.split("-"); // hyphens as separators + +// added extra functionality to handle non-numeric values + let first, second, year; + + if (isNaN(parts[0])) { + first = 0; + } else { + first = parseInt(parts[0]); + } + + if (isNaN(parts[1])) { + second = 0; + } else { + second = parseInt(parts[1]); + } + + if (isNaN(parts[2])) { + year = 0; + } else { + year = parseInt(parts[2]); + } + /* + only making it return 0 to folollow the "All returned values should be numbers, + not strings" requirement + */ + if (format === "MDY") { + return { day: second, month: first, year: year }; + } + return { day: first, month: second, year: year }; +} + +console.log(parseDateString("MDY ten-twentyone-1983")); +console.log(parseDateString("DMY 21-10-1983")); +console.log(parseDateString("MDY 03-15-2024")); +console.log(parseDateString("DMY 15-0three-2024")); diff --git a/task-3/date.js b/task-3/date.js new file mode 100644 index 0000000..77f6654 --- /dev/null +++ b/task-3/date.js @@ -0,0 +1,23 @@ +export function convertHoursToMinutes(hours) { + return hours * 60; +} + +export function convertMinutesToHours(minutes) { + return minutes / 60; +} + +export function convertDaysToHours(days) { + return days * 24; +} + +export function convertHoursToDays(hours) { + return hours / 24; +} + +export function convertMinutesToSeconds(minutes) { + return minutes * 60; +} + +export function convertSecondsToMinutes(seconds) { + return seconds / 60; +} diff --git a/task-4/cleanup.js b/task-4/cleanup.js index 207523a..2c77d9a 100644 --- a/task-4/cleanup.js +++ b/task-4/cleanup.js @@ -1,80 +1,59 @@ -// Temperature conversion and weather report for City 1 -let cityName1 = "Amsterdam"; -let tempCelsius1 = 22; -let tempFahrenheit1 = (tempCelsius1 * 9 / 5) + 32; -let tempKelvin1 = tempCelsius1 + 273.15; -console.log("Weather Report for " + cityName1); -console.log("Temperature: " + tempCelsius1 + "°C"); -console.log("Temperature: " + tempFahrenheit1 + "°F"); -console.log("Temperature: " + tempKelvin1 + "K"); -if (tempCelsius1 < 0) { - console.log("Status: Freezing"); -} else if (tempCelsius1 >= 0 && tempCelsius1 < 10) { - console.log("Status: Cold"); -} else if (tempCelsius1 >= 10 && tempCelsius1 < 20) { - console.log("Status: Mild"); -} else if (tempCelsius1 >= 20 && tempCelsius1 < 30) { - console.log("Status: Warm"); -} else { - console.log("Status: Hot"); +// Converts temperature from Celsius to Fahrenheit +function celsiusToFahrenheit(celsius) { + return (celsius * 9 / 5) + 32; } -console.log("---"); -// Temperature conversion and weather report for City 2 -let cityName2 = "Berlin"; -let tempCelsius2 = 15; -let tempFahrenheit2 = (tempCelsius2 * 9 / 5) + 32; -let tempKelvin2 = tempCelsius2 + 273.15; -console.log("Weather Report for " + cityName2); -console.log("Temperature: " + tempCelsius2 + "°C"); -console.log("Temperature: " + tempFahrenheit2 + "°F"); -console.log("Temperature: " + tempKelvin2 + "K"); -if (tempCelsius2 < 0) { - console.log("Status: Freezing"); -} else if (tempCelsius2 >= 0 && tempCelsius2 < 10) { - console.log("Status: Cold"); -} else if (tempCelsius2 >= 10 && tempCelsius2 < 20) { - console.log("Status: Mild"); -} else if (tempCelsius2 >= 20 && tempCelsius2 < 30) { - console.log("Status: Warm"); -} else { - console.log("Status: Hot"); +// Converts temperature from Celsius to Kelvin +function celsiusToKelvin(celsius) { + return celsius + 273.15; } -console.log("---"); -// Temperature conversion and weather report for City 3 -let cityName3 = "Copenhagen"; -let tempCelsius3 = -5; -let tempFahrenheit3 = (tempCelsius3 * 9 / 5) + 32; -let tempKelvin3 = tempCelsius3 + 273.15; -console.log("Weather Report for " + cityName3); -console.log("Temperature: " + tempCelsius3 + "°C"); -console.log("Temperature: " + tempFahrenheit3 + "°F"); -console.log("Temperature: " + tempKelvin3 + "K"); -if (tempCelsius3 < 0) { - console.log("Status: Freezing"); -} else if (tempCelsius3 >= 0 && tempCelsius3 < 10) { - console.log("Status: Cold"); -} else if (tempCelsius3 >= 10 && tempCelsius3 < 20) { - console.log("Status: Mild"); -} else if (tempCelsius3 >= 20 && tempCelsius3 < 30) { - console.log("Status: Warm"); -} else { - console.log("Status: Hot"); +//etermines weather status based on Celsius temperature +function getWeatherStatus(tempCelsius) { + if (tempCelsius < 0) { + return "Freezing"; + } else if (tempCelsius >= 0 && tempCelsius < 10) { + return "Cold"; + } else if (tempCelsius >= 10 && tempCelsius < 20) { + return "Mild"; + } else if (tempCelsius >= 20 && tempCelsius < 30) { + return "Warm"; + } else { + return "Hot"; + } } -console.log("---"); -// Wind chill calculation for City 1 -let windSpeed1 = 15; -let windChill1 = 13.12 + 0.6215 * tempCelsius1 - 11.37 * Math.pow(windSpeed1, 0.16) + 0.3965 * tempCelsius1 * Math.pow(windSpeed1, 0.16); -console.log("Wind chill in " + cityName1 + ": " + windChill1.toFixed(2) + "°C"); +// Calculates wind chill based on Celsius temperature and wind speed in km/h +function calculateWindChill(tempCelsius, windSpeed) { + const constant = 13.12; + const tempCoeff1 = 0.6215; + const windCoeff1 = 11.37; + const windExponent = 0.16; + const tempCoeff2 = 0.3965; + + return constant + + tempCoeff1 * tempCelsius - + windCoeff1 * Math.pow(windSpeed, windExponent) + + tempCoeff2 * tempCelsius * Math.pow(windSpeed, windExponent); +} -// Wind chill calculation for City 2 -let windSpeed2 = 20; -let windChill2 = 13.12 + 0.6215 * tempCelsius2 - 11.37 * Math.pow(windSpeed2, 0.16) + 0.3965 * tempCelsius2 * Math.pow(windSpeed2, 0.16); -console.log("Wind chill in " + cityName2 + ": " + windChill2.toFixed(2) + "°C"); +// Generates a weather report for a given city +function generateWeatherReport(cityName, tempCelsius, windSpeed) { + const tempFahrenheit = celsiusToFahrenheit(tempCelsius); + const tempKelvin = celsiusToKelvin(tempCelsius); + const weatherStatus = getWeatherStatus(tempCelsius); + const windChill = calculateWindChill(tempCelsius, windSpeed); + + console.log("Weather Report for " + cityName); + console.log("Temperature: " + tempCelsius + "°C"); + console.log("Temperature: " + tempFahrenheit + "°F"); + console.log("Temperature: " + tempKelvin + "K"); + console.log("Status: " + weatherStatus); + console.log("Wind chill: " + windChill.toFixed(2) + "°C"); + console.log("---"); +} -// Wind chill calculation for City 3 -let windSpeed3 = 25; -let windChill3 = 13.12 + 0.6215 * tempCelsius3 - 11.37 * Math.pow(windSpeed3, 0.16) + 0.3965 * tempCelsius3 * Math.pow(windSpeed3, 0.16); -console.log("Wind chill in " + cityName3 + ": " + windChill3.toFixed(2) + "°C"); \ No newline at end of file +// Example +generateWeatherReport("Amsterdam", 22, 15); +generateWeatherReport("Berlin", 15, 20); +generateWeatherReport("Copenhagen", -5, 25); \ No newline at end of file