This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Random.js | |
Реализуйте генератор случайных чисел, представленный классом Random. Интерфейс объекта включает в себя три функции: | |
Конструктор. Принимает на вход seed, начальное число генератора псевдослучайных чисел. | |
getNext() — метод, возвращающий новое случайное число. | |
reset() — метод, сбрасывающий генератор на начальное значение. | |
Экспортируйте класс по умолчанию. | |
Примеры | |
const seq = new Random(100); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Circle.js | |
Реализуйте и экспортируйте по умолчанию класс Circle описывающий круг. У круга есть только одно свойство - его радиус. Реализуйте методы getArea() и getCircumference(), которые вычисляют и возвращают площадь и длину окружности соответственно. | |
Примеры | |
const circle = new Circle(3); | |
circle.getArea(); // 28.274... | |
Подсказки | |
Площадь круга: πr2 | |
Длина окружности: 2*πR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Особенность структуры двоичного дерева даёт хороший прирост к эффективности при поиске нужного значения. Для этого нужно, чтобы двоичное дерево было сбалансированным. То есть необходимо построить дерево так, чтобы общее количество узлов в левом и правом поддеревьях было примерно одинаковым для любого узла дерева. | |
Node.js | |
Реализуйте метод isBalanced(), который проверяет дерево на сбалансированность. Он возвращает true, если количество узлов в левом и правом поддеревьях каждого узла отличается не более, чем на 2. В ином случае метод должен вернуть false. | |
Сбалансированное дерево | |
Сбалансированное двоичное дерево поиска | |
Несбалансированное дерево |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
В данном испытании мы будем использовать двоичное дерево, и выполнять агрегацию данных. | |
Node.js | |
Реализуйте следующие методы в классе: | |
getCount() — возвращает количество узлов в дереве. | |
getSum() — возвращает сумму всех ключей дерева. | |
toArray() — возвращает одномерный массив содержащий все ключи. | |
toString() — возвращает строковое представление дерева. | |
every(fn) — проверяет, удовлетворяют ли все ключи дерева условию, заданному в передаваемой функции. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Двоичное дерево — иерархическая структура данных, в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. | |
В данном испытании мы будем использовать подвид двоичного дерева — двоичное дерево поиска. Правильное дерево не содержит повторяющихся ключей, и для каждого узла гарантируется, что в левом поддереве все значения меньше текущего, а в правом — больше. | |
Двоичное дерево поиска | |
Node.js | |
Реализуйте и экспортируйте по умолчанию класс, который реализует представление узла. | |
Класс должен содержать: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Node.js | |
Двоичное дерево поиска состоит из узлов, каждый из которых содержит значение ключа и два поддерева (левое и правое), которые в свою очередь также являются двоичными деревьями. Правильное дерево не содержит повторяющихся ключей, и для каждого узла гарантируется, что в левом поддереве все значения меньше текущего, а в правом — больше. | |
Двоичное дерево поиска | |
Реализуйте и экспортируйте по умолчанию класс, который реализует представление узла. Конструктор класса принимает на вход значение ключа (число), и двух детей, которые в свою очередь также являются узлами. Дерево может быть создано пустым. | |
Класс должен содержать методы: | |
Геттер getKey() — возвращает ключ. Если дерево пустое, возвращает null. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
url.js | |
Реализуйте абстракцию для работы с урлами. Она должна извлекать и менять части адреса. Интерфейс: | |
make(url) - Конструктор. Создает урл. | |
setProtocol(data, protocol) - Сеттер. Меняет схему. | |
getProtocol(data) - Селектор (геттер). Извлекает схему. | |
setHost(data, host) - Сеттер. Меняет хост. | |
getHost(data) - Геттер. Извлекает хост. | |
setPath(data, path) - Сеттер. Меняет строку запроса. | |
getPath(data) - Геттер. Извлекает строку запроса. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Иногда в программировании возникает задача поиска разницы между двумя наборами данных, такими как объекты. Например, при поиске различий в json файлах. Для этого даже существуют специальные сервисы, например, http://www.jsondiff.com/ (попробуйте нажать на ссылку sample data и затем кнопку Compare). | |
solution.js | |
Реализуйте и экспортируйте по умолчанию функцию, которая сравнивает два объекта и возвращает результат сравнения в виде объекта. Ключами результирующего объекта будут все ключи из двух входящих объектов, а значением строка с описанием отличий: added, deleted, changed или unchanged. | |
Возможные значения: | |
added — ключ отсутствовал в первом объекте, но был добавлен во второй | |
deleted — ключ был в первом объекте, но отсутствует во втором | |
changed — ключ присутствовал и в первом и во втором объектах, но значения отличаются |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scrabble.js | |
Реализуйте и экспортируйте по умолчанию функцию-предикат, которая принимает на вход два параметра: набор символов в нижнем регистре (строку) и слово, и проверяет, можно ли из переданного набора составить это слово. В результате вызова функция возвращает true или false. | |
При проверке учитывается количество символов, нужных для составления слова, и не учитывается их регистр. | |
Примеры | |
scrabble('rkqodlw', 'world'); // true | |
scrabble('avj', 'java'); // false | |
scrabble('avjafff', 'java'); // true | |
scrabble('', 'hexlet'); // false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Для записи цифр римляне использовали буквы латинского алфафита: I, V, X, L, C, D, M. Например: | |
1 обозначалась с помощью буквы I | |
10 с помощью Х | |
7 с помощью VII | |
Число 2020 в римской записи — это MMXX (2000 = MM, 20 = XX). | |
solution.js | |
Реализуйте и экспортируйте функцию toRoman(), которая переводит арабские числа в римские. Функция принимает на вход целое число в диапазоне от 1 до 3000, а возвращает строку с римским представлением этого числа. |