From 1dc69571ffc48f120dad65807d2cf826d4afdda6 Mon Sep 17 00:00:00 2001 From: Yana Pechenenko Date: Tue, 20 Jan 2026 12:25:35 +0100 Subject: [PATCH 1/5] task-1 done --- task-1/leap-year.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/task-1/leap-year.js b/task-1/leap-year.js index e05d215..1ffbd4f 100644 --- a/task-1/leap-year.js +++ b/task-1/leap-year.js @@ -1,9 +1,20 @@ -import promptSync from 'prompt-sync'; +import promptSync from "prompt-sync"; const prompt = promptSync(); +const year = Number(prompt("Enter a year to check if it is a leap year: ")); -// Write your code here -// Guidance: -// Step 1: prompt the user to enter a year -// Step 2: convert the user input to a number so we can perform calculations -// Step 3: Implement the logic +if (year >= 1 && year <= 9999) { + if (!(year % 4)) { + if (!(year % 100) && !(year % 400)) { + console.log(`Yes, ${year} is a leap year`); + } else if (year % 100) { + console.log(`Yes, ${year} is a leap year`); + } else { + console.log(`No, ${year} is not a leap year`); + } + } else { + console.log(`No, ${year} is not a leap year`); + } +} else { + console.log("Invalid year! Enter year from 1 till 9999"); +} From 4365e339ff50d88ac25b7b6329a93884151cc178 Mon Sep 17 00:00:00 2001 From: Yana Pechenenko Date: Tue, 20 Jan 2026 14:03:52 +0100 Subject: [PATCH 2/5] fix task-1 && done task-2 --- task-1/leap-year.js | 18 +++++------------- task-2/login.js | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/task-1/leap-year.js b/task-1/leap-year.js index 1ffbd4f..19185bb 100644 --- a/task-1/leap-year.js +++ b/task-1/leap-year.js @@ -3,18 +3,10 @@ const prompt = promptSync(); const year = Number(prompt("Enter a year to check if it is a leap year: ")); -if (year >= 1 && year <= 9999) { - if (!(year % 4)) { - if (!(year % 100) && !(year % 400)) { - console.log(`Yes, ${year} is a leap year`); - } else if (year % 100) { - console.log(`Yes, ${year} is a leap year`); - } else { - console.log(`No, ${year} is not a leap year`); - } - } else { - console.log(`No, ${year} is not a leap year`); - } +if (year < 1 || year > 9999) { + console.log("Invalid year!"); +} else if (!(year % 400) || (!(year % 4) && (year % 100))) { + console.log(`Yes, ${year} is a leap year`); } else { - console.log("Invalid year! Enter year from 1 till 9999"); + console.log(`No, ${year} is not a leap year`); } diff --git a/task-2/login.js b/task-2/login.js index ca9ba92..28c844c 100644 --- a/task-2/login.js +++ b/task-2/login.js @@ -4,10 +4,21 @@ import { errorMessage, successMessage } from './app.js'; let incorrectAttempts = 0; function onLogin(username, password) { - // Write your code here. - // Use the variables 'username' and 'password' to access the input values - // Use incorrectAttempts to track the number of failed attempts -} + + const isValid = (username === "admin" && password === "Hack1234") || (username === "user" && password === "7654321"); + + if(incorrectAttempts > 3) { + errorMessage('Login blocked: Too many incorrect attempts'); + return + } else if (isValid){ + incorrectAttempts = 0; + successMessage('Logged in successfully'); + } else { + incorrectAttempts++; + if(incorrectAttempts === 4){errorMessage('Login blocked: Too many incorrect attempts');} else { + errorMessage('Incorrect credentials')}} + } + // Do not change the line below export { onLogin }; From d220ec15678ee2efea11c029f6a5f15ec4c6438b Mon Sep 17 00:00:00 2001 From: Yana Pechenenko Date: Tue, 20 Jan 2026 14:40:30 +0100 Subject: [PATCH 3/5] fix converter.js --- task-2/login.js | 26 +++++++++++++++----------- task-3/converter.js | 17 ++++++++++------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/task-2/login.js b/task-2/login.js index 28c844c..fb27a7d 100644 --- a/task-2/login.js +++ b/task-2/login.js @@ -1,24 +1,28 @@ // Do not change the line below -import { errorMessage, successMessage } from './app.js'; +import { errorMessage, successMessage } from "./app.js"; let incorrectAttempts = 0; function onLogin(username, password) { + const isValid = + (username === "admin" && password === "Hack1234") || + (username === "user" && password === "7654321"); - const isValid = (username === "admin" && password === "Hack1234") || (username === "user" && password === "7654321"); - - if(incorrectAttempts > 3) { - errorMessage('Login blocked: Too many incorrect attempts'); - return - } else if (isValid){ + if (incorrectAttempts > 3) { + errorMessage("Login blocked: Too many incorrect attempts"); + return; + } else if (isValid) { incorrectAttempts = 0; - successMessage('Logged in successfully'); + successMessage("Logged in successfully"); } else { incorrectAttempts++; - if(incorrectAttempts === 4){errorMessage('Login blocked: Too many incorrect attempts');} else { - errorMessage('Incorrect credentials')}} + if (incorrectAttempts === 4) { + errorMessage("Login blocked: Too many incorrect attempts"); + } else { + errorMessage("Incorrect credentials"); + } } - +} // Do not change the line below export { onLogin }; diff --git a/task-3/converter.js b/task-3/converter.js index 0f54a18..a498963 100644 --- a/task-3/converter.js +++ b/task-3/converter.js @@ -5,10 +5,11 @@ const prompt = promptSync(); const EUR_USD_RATE = 1.1643; // Menu display -conole.log("Hello and welcome to the currency converter. Please choose: "); +console.log("Hello and welcome to the currency converter. Please choose: "); console.log("1: Convert EUR to USD"); console.log("2: Convert USD to EUR"); -const menuSelection = prompt("Select your option [1 or 2]: "); +console.log("3: Display the current exchange rate"); +const menuSelection = prompt("Select your option [1, 2 or 3]: "); console.log("\n"); @@ -16,7 +17,7 @@ if (menuSelection === "1") { // EUR to USD const eurAmountInput = prompt("Enter amount in EUR: "); const eurAmountNum = Number(eurAmountInput); - if (Number.isNaN(eurAmountNum) || eurAmountNum > 0) { + if (Number.isNaN(eurAmountNum) || eurAmountNum <= 0) { console.log("Please enter a valid positive number for the amount."); } else { const usdAmount = eurAmountNum * EUR_USD_RATE; @@ -26,12 +27,14 @@ if (menuSelection === "1") { // USD to EUR const usdAmountInput = prompt("Enter amount in USD: "); const usdAmountNum = Number(usdAmountInput); - if (Number.isNaN(usdAmountNum) || usdAmountNum < 0) { + if (Number.isNaN(usdAmountNum) || usdAmountNum <= 0) { console.log("Please enter a valid positive number for the amount."); } else { - const eurAmount = usdAmountNum / eur_usd_rate; - console.log(usdAmountNum.toFixed(2) + ' USD is equal to ' + usdAmountNum.toFixed(2) + ' EUR.'); + const eurAmount = usdAmountNum / EUR_USD_RATE; + console.log(usdAmountNum.toFixed(2) + ' USD is equal to ' + eurAmount.toFixed(2) + ' EUR.'); } +} else if(menuSelection === "3"){ + console.log(`The current exchange rate is 1 EUR = ${EUR_USD_RATE} USD.`) } else { - console.log("Invalid selection. Please choose either 1 or 2."); + console.log("Invalid selection. Please choose either 1, 2 or 3"); } From 55c9ac9f9c70b20f5d13e712f60a70561fb80ba1 Mon Sep 17 00:00:00 2001 From: Yana Pechenenko Date: Wed, 11 Feb 2026 21:35:22 +0100 Subject: [PATCH 4/5] add check for isNan and isInteger --- task-1/leap-year.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/task-1/leap-year.js b/task-1/leap-year.js index 19185bb..326cdbb 100644 --- a/task-1/leap-year.js +++ b/task-1/leap-year.js @@ -3,10 +3,14 @@ const prompt = promptSync(); const year = Number(prompt("Enter a year to check if it is a leap year: ")); -if (year < 1 || year > 9999) { - console.log("Invalid year!"); -} else if (!(year % 400) || (!(year % 4) && (year % 100))) { - console.log(`Yes, ${year} is a leap year`); +if (Number.isNaN(year)) { + console.log("Please, enter a number"); +} else if (!Number.isInteger(year)) { + console.log("Please, enter a whole number (no decimals)"); +} else if (year < 1 || year > 9999) { + console.log("Invalid year!"); +} else if (!(year % 400) || (!(year % 4) && year % 100)) { + console.log(`Yes, ${year} is a leap year`); } else { - console.log(`No, ${year} is not a leap year`); + console.log(`No, ${year} is not a leap year`); } From 54020febbf58a3ef07d77d26e1bdc65e2b562ba2 Mon Sep 17 00:00:00 2001 From: Yana Pechenenko Date: Wed, 11 Feb 2026 21:43:13 +0100 Subject: [PATCH 5/5] extract leap year logic into isLeapYear variable --- task-1/leap-year.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/task-1/leap-year.js b/task-1/leap-year.js index 326cdbb..ad890fd 100644 --- a/task-1/leap-year.js +++ b/task-1/leap-year.js @@ -3,13 +3,15 @@ const prompt = promptSync(); const year = Number(prompt("Enter a year to check if it is a leap year: ")); +const isLeapYear = year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0); + if (Number.isNaN(year)) { console.log("Please, enter a number"); } else if (!Number.isInteger(year)) { console.log("Please, enter a whole number (no decimals)"); } else if (year < 1 || year > 9999) { console.log("Invalid year!"); -} else if (!(year % 400) || (!(year % 4) && year % 100)) { +} else if (isLeapYear) { console.log(`Yes, ${year} is a leap year`); } else { console.log(`No, ${year} is not a leap year`);