From bde2c4ccaad382469e81ad6a0326d78934f753db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C?= Date: Fri, 7 Feb 2025 23:57:44 +0300 Subject: [PATCH 1/4] factorial --- 1-module/1-task/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/1-module/1-task/index.js b/1-module/1-task/index.js index 977f6f3..68a5eae 100644 --- a/1-module/1-task/index.js +++ b/1-module/1-task/index.js @@ -1,3 +1,6 @@ function factorial(n) { - // ваш код... + if (n === 0 || n === 1) { + return 1; + } + return n * factorial(n - 1); } From 512d526bcbdde95d7bc4ffaa39aeeb2057d09127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C?= Date: Sun, 9 Feb 2025 00:17:46 +0300 Subject: [PATCH 2/4] name valid --- 1-module/2-task/README.md | 47 ++++++++++++++++++++++++++++++++++++ 1-module/2-task/index.js | 24 ++++++++++++++++++ 1-module/2-task/task.test.js | 17 +++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 1-module/2-task/README.md create mode 100644 1-module/2-task/index.js create mode 100644 1-module/2-task/task.test.js diff --git a/1-module/2-task/README.md b/1-module/2-task/README.md new file mode 100644 index 0000000..cc5d5d6 --- /dev/null +++ b/1-module/2-task/README.md @@ -0,0 +1,47 @@ +# Допишите функцию валидации имени пользователя + +Необходимо, чтобы на сайте можно было поприветствовать только пользователей, +которые удовлетворяют следующему условию - *имя не пустое, без пробелов, минимум 4 символа*. + +```js +/** + * Эту функцию трогать не нужно + */ +function print(text) { + console.log(text); +} + +/** + * Эту функцию нужно поменять так, + * чтобы функция sayHello работала корректно + * @param {string | null} name + * @returns {boolean} + */ +function isValid(name) { + if (typeof name !== 'string' || name.trim() === '') { + return false; + } + + name = name.trim(); + const validNamePattern = /^[A-Za-zА-Яа-яЁё]+$/; + + return name.length >= 4 && validNamePattern.test(name); +} + +/** + * Эту функцию трогать не нужно + */ +function sayHello() { + let userName = prompt('Введите ваше имя'); + + if (isValid(userName)) { + print(`Welcome back, ${userName}!`); + } else { + print('Некорректное имя'); + } +} + +sayHello(); +``` + + diff --git a/1-module/2-task/index.js b/1-module/2-task/index.js new file mode 100644 index 0000000..e59bf21 --- /dev/null +++ b/1-module/2-task/index.js @@ -0,0 +1,24 @@ +/** + * Эту функцию трогать не нужно + */ +function print(text) { + console.log(text); +} + +/** + * Эту функцию нужно поменять так, + * чтобы функция sayHello работала корректно + */ +function isValid(name) { + // ваш код... +} + +function sayHello() { + let userName = prompt('Введите ваше имя'); + + if (isValid(userName)) { + print(`Welcome back, ${userName}!`); + } else { + print('Некорректное имя'); + } +} diff --git a/1-module/2-task/task.test.js b/1-module/2-task/task.test.js new file mode 100644 index 0000000..bfbac4c --- /dev/null +++ b/1-module/2-task/task.test.js @@ -0,0 +1,17 @@ +describe('1-module-2-task', () => { + it('если имя корректное, то true', () => { + expect(isValid('Ilia')).toEqual(true); + }); + + it('если содержит пробелы, то false', () => { + expect(isValid('Ilia Burlak')).toEqual(false); + }); + + it('если меньше 4 символов то false', () => { + expect(isValid('Ili')).toEqual(false); + }); + + it('если null то false', () => { + expect(isValid(null)).toEqual(false); + }); +}); From c3c58c419ab4cd85591ff82a2a5842531c7275a4 Mon Sep 17 00:00:00 2001 From: javascriptru <67475495+jsru-1@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:46:54 +0300 Subject: [PATCH 3/4] =?UTF-8?q?Added=20task=20=D0=A1=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=D0=B2=D0=BE=D0=BB=20=D0=B7=D0=B0=D0=B3=D0=BB?= =?UTF-8?q?=D0=B0=D0=B2=D0=BD=D1=8B=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-module/3-task/README.md | 15 +++++++++++++++ 1-module/3-task/index.js | 3 +++ 1-module/3-task/task.test.js | 13 +++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 1-module/3-task/README.md create mode 100644 1-module/3-task/index.js create mode 100644 1-module/3-task/task.test.js diff --git a/1-module/3-task/README.md b/1-module/3-task/README.md new file mode 100644 index 0000000..0ea817f --- /dev/null +++ b/1-module/3-task/README.md @@ -0,0 +1,15 @@ +# Сделать первый символ заглавным + +Напишите функцию `ucFirst(str)`, возвращающую строку `str` с заглавным первым символом. Например: + +```js +ucFirst('вася') === 'Вася'; +``` + +Обратите внимание, что функция также должна работать со строкой: +- содержащей только один символ `'В'` +- не содержащей символы `''` +```js +ucFirst('в') === 'В'; +ucFirst('') === ''; +``` diff --git a/1-module/3-task/index.js b/1-module/3-task/index.js new file mode 100644 index 0000000..5c3e6a5 --- /dev/null +++ b/1-module/3-task/index.js @@ -0,0 +1,3 @@ +function ucFirst(str) { + // ваш код... +} diff --git a/1-module/3-task/task.test.js b/1-module/3-task/task.test.js new file mode 100644 index 0000000..719b5c3 --- /dev/null +++ b/1-module/3-task/task.test.js @@ -0,0 +1,13 @@ +describe('1-module-3-task', () => { + it('должна делать первый символ заглавным', () => { + expect(ucFirst('вася')).toBe('Вася'); + }); + + it('должна работать для строки из одной буквы', () => { + expect(ucFirst('в')).toBe('В'); + }); + + it('должна работать для пустой строки', () => { + expect(ucFirst('')).toBe(''); + }); +}); From 6f1fab9776aca4d8957048214fbbe329cd5df505 Mon Sep 17 00:00:00 2001 From: javascriptru <67475495+jsru-1@users.noreply.github.com> Date: Sun, 9 Feb 2025 00:37:14 +0300 Subject: [PATCH 4/4] =?UTF-8?q?Added=20task=20=D0=9F=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D1=81=D0=BF=D0=B0?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-module/4-task/README.md | 11 +++++++++++ 1-module/4-task/index.js | 3 +++ 1-module/4-task/task.test.js | 13 +++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 1-module/4-task/README.md create mode 100644 1-module/4-task/index.js create mode 100644 1-module/4-task/task.test.js diff --git a/1-module/4-task/README.md b/1-module/4-task/README.md new file mode 100644 index 0000000..6fe9fc8 --- /dev/null +++ b/1-module/4-task/README.md @@ -0,0 +1,11 @@ +# Проверка на спам + +Напишите функцию `checkSpam(str)`, возвращающую `true`, если `str` содержит `'1xBet'` или `'XXX'`, а иначе `false`. + +Функция должна быть нечувствительна к регистру: + +```js +checkSpam('1XbeT now') === true +checkSpam('free xxxxx') === true +checkSpam('innocent rabbit') === false +``` diff --git a/1-module/4-task/index.js b/1-module/4-task/index.js new file mode 100644 index 0000000..08684b7 --- /dev/null +++ b/1-module/4-task/index.js @@ -0,0 +1,3 @@ +function checkSpam(str) { + // ваш код... +} diff --git a/1-module/4-task/task.test.js b/1-module/4-task/task.test.js new file mode 100644 index 0000000..d644c67 --- /dev/null +++ b/1-module/4-task/task.test.js @@ -0,0 +1,13 @@ +describe('1-module-4-task', () => { + it('должна возвращать true для \'1XbeT now\'', () => { + expect(checkSpam('1XbeT now')).toBe(true); + }); + + it('должна возвращать true для \'free xxxxx\'', () => { + expect(checkSpam('free xxxxx')).toBe(true); + }); + + it('должна возвращать false для \'innocent rabbit\'', () => { + expect(checkSpam('innocent rabbit')).toBe(false); + }); +});