Репозиторий для реализации студентами различных утилит и задач:
- isEqual function
- len function
- replace len funcion
- isNotEqual funcion
- isMore function
- isLess function
- isMoreOrEqual function
- isLessOrEqual function
- Отправляем свой код на код-ревью
-
- Написать тесты которые проверяют требования к функции.
-
remove function
Описание задачи: Реализуйте функциюremove(text: string, charToRemove: string): string
, которая принимает строку text и символ charToRemove, и возвращает новую строку, из которой удалены все вхождения символа charToRemove.
Необходимо будет создать файлы remove.ts, remove.test.ts
Написать тесты которые проверяют требования к функции.
- trim function
- replace function
- pad function
- startsWith, endsWith function
- slice, endsWith function
- Отправляем свой код на код-ревью
- charUtils function
- upperCase, lowerCase function
- invertCase function
Описание задачи: Реализуйте функциюinvertCase(text: string): string
, которая принимает строку text и возвращает новую строку, в которой все буквы инвертированы: символы в верхнем регистре преобразованы в нижний, а в нижнем — в верхний.
Написать тесты которые проверяют требования к функции. - capitalize function
Описание задачи: Реализуйте функциюcapitalize(text: string): string
, которая принимает строку text и возвращает новую строку, в которой первый символ преобразован в верхний регистр, а все остальные — в нижний регистр.
Написать тесты которые проверяют требования к функции. - Отправляем свой код на код-ревью
Задание 1: Функция для перевода строки из camelCase в snake_case
Описание задачи:
- Реализуйте функцию
camelToSnake(text: string): string
, которая принимает строку в camelCase формате и переводит её в snake_case. - Функционал должен быть покрытый тестами.
Задание 2: Функция для перевода строки из snake_case в camelCase
Описание задачи:
- Реализуйте функцию
snakeToCamel(text: string): string
, которая принимает строку в snake_case формате и переводит её в camelCase. - Функционал должен быть покрытый тестами.
Задание 3: Функция для перевода строки из camelCase в kebab-case
Описание задачи:
- Реализуйте функцию
camelToKebab(text: string): string
, которая принимает строку в camelCase формате и переводит её в kebab-case. - Функционал должен быть покрытый тестами.
Задание 4: Функция для перевода строки из kebab-case в camelCase
Описание задачи:
- Реализуйте функцию
kebabToCamel(text: string): string
, которая принимает строку в kebab-case формате и переводит её в camelCase. - Функционал должен быть покрытый тестами.
Задание 5: Функция для перевода строки из snake_case в kebab-case
Описание задачи:
- Реализуйте функцию
snakeToKebab(text: string): string
, которая принимает строку в snake_case формате и переводит её в kebab-case. - Функционал должен быть покрытый тестами.
Задание 6: Функция для перевода строки из kebab-case в snake_case
Описание задачи:
- Реализуйте функцию
kebabToSnake(text: string): string
, которая принимает строку в kebab-case формате и переводит её в snake_case. - Функционал должен быть покрытый тестами.
Задание 7: Код-ревью
Задание 1: Реализация функции генерации случайных строк на основе формата
Описание задачи:
Вам необходимо реализовать функцию random(format: string, delimiter = '-'): string
, которая будет генерировать случайные строки на основе предоставленного формата. Формат строки задается с использованием специальных символов, каждый из которых определяет тип символа, который будет сгенерирован.
Специальные символы для генерации:
h — случайное шестнадцатеричное число (0-9, a-f). d — случайная десятичная цифра (0-9). z — случайная буква английского алфавита (a-z). Z - случайная буква английского алфавита в нижнем и врехнем регистре (a-z, A-Z). a — случайная буква английского алфавита или цифра (a-z, 0-9). Z - случайная буква английского алфавита в нижнем и врехнем регистре или цифра (a-z, A-Z, 0-9). 0-9 — генерирует случайное число в диапазоне от 0 до указанного числа. Аргументы функции:
format: string
— строка, задающая формат генерации. Каждый символ в этой строке определяет тип данных, которые будут сгенерированы.
delimiter: string
— разделитель, который используется для разделения сегментов в строке формата (по умолчанию '-').
Функция должна возвращать:
Сгенерированную строку, которая соответствует заданному формату.
Функционал должен быть покрытый тестами. Перед началом реализации напишите тесты, а потом приступайте к реализации (test driven development) Примеры тестовых случаев:
random('h-d-d-d'); // 'a-5-3-8'
random('z_z_d', '_'); // 'k_p_7'
random('255.255.255.255', '.');// '237.084.102.178'
random('d-d-4-h'); // '3-8-2-c'
random('hdd-AA', ':'); // 'b32-Y8'
random('hh-hhhh-hhhh'); // 'c5-499f-9196'
random('dd.dddd.dddd', '.') // '39.1231.3456'
random('3-34-4h-hhh') // '0-34-41-bf5'
random('zzzz#ddd', '#') // 'jafn#855'
random('2.2.4', '.') // '2.1.4'
Задание 2: Функция для подсчёта количества слов в строке Цель: Реализовать функцию, которая принимает на вход строку и возвращает количество слов в этой строке.
Функция должна обладать следующими возможностями: Подсчёт общего количества слов:
- Функция должна возвращать количество слов в переданной строке.
- Слово определяется как последовательность символов, разделённых пробелами или знаками препинания (такими как запятые, точки, восклицательные знаки и т.д.).
- Игнорирование лишних пробелов:
- Если строка пустая или содержит только пробелы и знаки препинания, функция должна возвращать 0.
Требования: Входные данные должны быть строкового типа. Если функция получает некорректные входные данные (например, число или объект), она должна выбрасывать исключение с сообщением "Invalid input". Пример реализации:
Примеры использования:
console.log(countWords("Hello, world! How are you?")); // 5
console.log(countWords(" Hello world ")); // 2
console.log(countWords("")); // 0
console.log(countWords("...,,!!")); // 0
Убедитесь, что функция корректно считает количество слов в строках с разными видами знаков препинания. Убедитесь, что функция возвращает 0 для пустых строк или строк, содержащих только пробелы и знаки препинания. Напишите тесты для проверки работы функции с корректными и некорректными входными данными.
Задание 3: Функция для извлечения слова из текста по его порядковому номеру Описание задачи:
Реализуйте функцию getWordAtPosition(text: string, position: number): string
, которая принимает строку text и порядковый номер position, и возвращает слово, находящееся на этой позиции в тексте. Позиции слов начинаются с 1.
Перед началом реализации напишите тесты, а потом приступайте к реализации (test driven development)
Примеры использования:
getWordAtPosition('Hello world from JavaScript', 2); // 'world'
getWordAtPosition('The quick brown fox jumps', 4); // 'fox'
getWordAtPosition('One two three four five', 5); // 'five'
getWordAtPosition('ChatGPT is a powerful tool', 3); // 'a'
Требования:
Если позиция превышает количество слов в тексте, вернуть пустую строку. Если позиция меньше 1, вернуть пустую строку. Пункты и знаки препинания не должны учитываться в качестве слов. Слова разделяются пробелами или другими разделительными символами (например, запятыми, точками, точками с запятой и т.д.). Функция должна корректно обрабатывать текст, содержащий несколько пробелов или других разделительных символов подряд. Дополнительное условие:
Подумайте, как сделать функцию устойчивой к неправильным входным данным, например, если в качестве позиции передано не число или текст содержит необычные символы.
Функционал должен быть покрытый тестами. Примеры тестовых случаев:
getWordAtPosition(' This is a test string ', 3); // 'a'
getWordAtPosition('A, quick, brown; fox!', 2); // 'quick'
getWordAtPosition('Hello world', 5); // ''
getWordAtPosition('One two', 0); // ''
getWordAtPosition('Punctuation: doesn\'t count!', 3); // 'count'
Задание3: Функция для обработки целых предложений Цель: Реализовать функцию, которая принимает на вход строку, содержащую одно или несколько предложений, и выполняет над ними различные операции.