Skip to content

Latest commit

 

History

History
260 lines (162 loc) · 14.2 KB

README.md

File metadata and controls

260 lines (162 loc) · 14.2 KB

Домашнее задание 1

Тема: Задачки на цикли, массивы, коллекции, объекты на JS

Уровни задач

Варианты заданий будут делится на 3 уровня сложности, где 1 - самый легкий уровень сложности, 3 - наиболее высокий соответственно.

Задача 1 уровня сложности - небольшая задачка, которую можно решить в несколько строк кода, зная синтаксис языка или необходимо написать маленький простой алгоритм

Задача 2 уровня - задача, где необходимо поработать с структурами данных (СД), возможно заиспользовать несколько СД и придумать алгоритм решения представленной задачи, учесть краевые "кейсы".

Задача 3 уровня - задача, с более углубленной работой с СД в JS, необходимо либо самому придумать алгоритм, либо поиспользовать какой-нибудь неочевидный на первый взгляд, также учесть краевые кейсы.

P.S Задачи 2 и 3 уровней встречаются в качестве базовых на собеседованиях на стажировки в крупные IT компании такие как: Яндекс, Ozon, Aliexpress, VK и т.д.

Для выполнения домашнего задания нужно набрать 4 балла.

Уровень задачи Количество баллов
1 уровень 1 балл
2 уровень 2 балла
3 уровень 4 балла

Варианты заданий

Задание 1 (3 уровень)

Напишите функцию merge, которая будет принимать на вход несколько объектов (любое количество), и возвращать единственный объект, содержащий все поля из всех объектов. Если одно и то же поле было в нескольких объектах, необходимо оставить значение, которое встретилось раньше

Задание 2 (2 уровень)

Напишите функцию euclid, которая позволяет находить НОД натуральных чисел. Функция должна работать с любым количеством аргументов

Задание 3 (3 уровень)

Напишите функцию inverse, которая меняет порядок элементов в массике на противоположный. Если в функцию вторым аргументом передаётся число — то переставляются все элементы массива кроме нескольких первых (количество зависит от числа). Если число отрицательное — то на месте остаются элементы в конце массива

Задание 4 (3 уровень)

Напишите функцию flatten, которая будет принимать на вход массив массивов и создавать из них один общий массив. Массивы могут быть любой вложенности

Пример:

[1, 2, 3, [4, 5, 6, [10, 20, 30]]] -> [1, 2, 3, 4, 5, 6, 10, 20 ,30]

Задание 5 (3 уровень)

Напишите функцию sort, которая будет сортировать буквы в словах по алфавиту, а потом получившиеся слова в предложении — тоже. Первую букву каждого слова она сделает прописной, остальные — строчными

Задание 6 (3 уровень)

Напишите функцию anagram, которая будет принимать на вход массив слов и группировать его на группы слов-анаграмм. Выводить только группы из двух и более слов. Слова в группах, как и сами группы, должны быть отсортированными

Задание 7 (3 уровень)

Напишите функцию rle, которая реализует RLE сжатие

Задание 8 (3 уровень)

Напишите функцию plainify, которая получает на вход обычный объект c вложенными свойствами, а возвращает plain-объект

Задание 9 (3,5 уровень)

Напишите функцию solve, которая принимает на вход строку с математическим выражением, зависящим от переменной x и значение этой переменной, а возвращает вычисленное значение этого выражения. В выражении фигурируют операции сложения, вычитания, умножения. Используются только целые числа и скобки

Задание 10 (2 уровень)

Дан список неотрицательных целых чисел, повторяющихся элементов в списке нет. Нужно преобразовать это множество в строку, сворачивая соседние по числовому ряду числа в диапазоны.

Пример

[1,2,3,5,6,7, 10, 11, 12, 14, 16,17, 18] -> '1-7,10-12,14,16-18'

Задание 11 (2 уровень)

Дана строка - последовательность, которая может состоять как из 0, так и 1. Необходимо найти максимальную последовательность 1 и вывести ее длину.

Пример

'1000000111100011111010111101111111' -> 7

Задание 12 (3 уровень)

Проверить что строка является палиндромом. Палиндромом называется строка, которая пишется одинаково слева направо и справа налево. Написать 2 решения.

isPalindrom('А роза упала на лапу Азора') // true isPalindrom(121) // true isPalindrom(1890) // false

Задание 13 (2 уровень)

Напишите функцию diff, которая возвращает массив, содержащий все элементы первого, которые не находятся во втором.

Задание 14 (2 уровень)

Напишите функцию findCouple(array, number), которая ищет в массиве все пары целых чисел, сумма которых равна заданному значению и возвращает их в виде массива строк. const neededNumber = 5; const array = [1, 6, 5, 2, 7, 5, 1, 4, 3, 9, 8, 11, 10, 18];

findCouple(array, neededNumber) // '1+4, 2+3, ...'

Задание 15 (2 уровень)

Качественная разница между двумя парами (a, b) и (c, d) определяется как (a * b) - (c * d).

Например, качественная разница между (5, 6) и (2, 7) - это (5 * 6) - (2 * 7) = 16. Дан массив целых чисел, необходимо найти 4 различных индекса w, x, y, и z, таких что, качественная разница между парами (nums[w], nums[x]) и (nums[y], nums[z]) была максимальной. Функция возвращает максимальную качественную разницу.

Входные данные: nums = [5,6,2,7,4] Результат: 34 Пояснение: Мы можем выбрать индексы 1 и 3 для первой пары (6, 7) и индексы 2 и 4 для второй пары (2, 4). Качественная разница тогда - (6 * 7) - (2 * 4) = 34.

Задание 16 (2 уровень)

Дана квадратная матрица matrix, верните сумму основной и побочной диагоналей матрицы.

Ввод: matrix = [[1,2,3], [4,5,6], [7,8,9]] Выход: 25

Задание 17 (2 уровень)

Дан массив целых чисел. Необходимо написать функцию, возвращающую сумму всех уникальных элементов. Уникальные - неповторяющиеся элементы.

Задание 18 (2 уровень)

Написать функцию, которая проверит можно ли получить из одного массива другой каким-либо способом.

Пример Даны два массива [1, 2, 3, 8, -2] и [2, 3, 8, 1, -2] Результат: true

Задание 19 (2 уровень)

Даны массив строк words и строка str. Обе строки состоят только из строчных английских букв.

Необходимо посчитать все слова, которые являются префиксами строки str и вывести их количество.

Префикс строки - это подстрока, которая встречается в начале строки. Подстрока - это непрерывная последовательность символов внутри строки.

Пример

Входные данные: words = ["a", "b", "c", "ab","bc", "abc"], s = "abc" Вывод: 3

Задание 20 (2 уровень)

Напишите код, объединяющий любое количество плоских массивов цифр в один. Функция должна вернуть строку, в которой будут идти все полученные цифры в порядке убывания их значений через пробел.

Пример:

Ввод: first = [1, 2, 3]; second = [-1, -10, 20]

Вывод: '20 3 2 1 -1 -10'

Задание 21 (1 уровень)

Напишите функцию, которая заполняет новый массив предоставленным значением. Ожидаемый результат: (3, 'a') => ['a', 'a', 'a']

// * @param {number} arraySize - размер массива
// * @param {?} data - значение для массива
// * @returns {Array}
  fill(arraySize, data) // ['a', 'a', 'a']

Задание 22 (1 уровень)

Напишите функцию erase, которая очищает массив от нежелательных значений, таких как false, undefined, пустые строки, ноль, null.

const data = [0, 1, false, 2, undefined, '', 3, null];
console.log(erase(data)) // [1, 2, 3]

Задание 23 (2 уровень)

Напишите функцию removeValues, возвращает новый массив без предоставленных значений. Используйте примитивные типы.

Ожидаемый результат: [1, 2, 3, 1, 2] без 1, 2 => [3]

const data = [1, 2, 3, 1, 2];
console.log(removeValues(data, 1, 2)); // [3]

Задание 24 (1 уровень)

Напишите функцию concatenate, которая принимает массив строк и символ-разделитель. Функция должна вернуть строчку склеенную по данному разделителю.

concatenate(['Я','Учусь','на','лучшей','кафедре'], ' ') // Я учусь на лучшей кафедре

Задание 25 (1 уровень)

Напишите функцию countIdentic(arr), которая возвращает количество повторяющихся элементов в массиве.

Задание 26 (1 уровень)

Напишите функцию sumOfSquares(arr), которая возвращает сумму квадратов значений массива.

Задание 27 (1 уровень)

Напишите функцию getSumAndMultOfArray(), который определяет сумму и произведение значений массива.

Задание 28 (1 уровень)

Напишите функцию moveElement(arr,from,to), которая позволяет переместить элемент массива из позиции from в позицию to.

Задание 29 (1 уровень)

Напишите функцию isEqualArrays, которая сравнивает два массива и возвращает true, если они идентичны.

Задание 30 (1 уровень)

Напишите функцию isEqualObj, которая сравнивает два объекта и возвращает true, если они идентичны.

Задание 31 (2 уровень)

Напишите функцию isEqual, которая сравнивает любые 2 значения и возвращает true, если они идентичны. Варианты значений по типам - все 6 типов и могут быть массивы. Технически массив, это Object, но чтобы явно его отделить будем "условно" считать его другим значением.

Задание 32 (1 уровень)

Вычислить среднее арифметическое элементов массива и вернуть его.