dshovchko / practice-1

Practice 1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Практическая работа 1: простые типы данных, приведение типов, объекты, массивы

Начало работы

Установите зависимости проекта:

npm install

После этого вам будут доступны следующие команды:

  • npm run lint - проверка качества вашего кода утилитой ESLint
  • npm run test [test-file] - запустить unit-тесты из указанного файла в консоли, например: npm run test test/spec/task-1.spec.js
  • npm run test - запуск всех unit-тестов в консоли
  • npm run test:watch [test-file], npm run test:watch - запуск одного или всех unit-тестов в консоли, с автоматическим перезапуском при изменении исходного кода. Например: npm run test:watch test/spec/task-1.spec.js

Помните, каждый раз когда ваши тесты выполняются корректно, один котик становится радостным!

Задания

Задача 1

Дано три числа a, b, c. Напишите функцию isTriangle, которая возвращает true, если эти числа могут быть сторонами треугольника.

Задача 2

Даны два числа n и a. Напишите функцию getNthItem, которая возвращает n-й член последовательности

S[0] = 0
S[i] = a - 2*S[i-1]

Задача 3

Дано натуральное число x. Напишите функцию sumDigits, которая будет подсчитывать сумму всех цифр этого числа.

Задача 4

Дано число секунд прошедших с полуночи. Функция formatTime должна сформировать строку с human-readable временем суток в 12-часовом формате (https://en.wikipedia.org/wiki/12-hour_clock). Количество часов, минут и секунд должно записываться двузначным числом. Например:

formatTime(3600) --> "01:00:00 AM"
formatTime(37784) --> "10:29:44 AM"
formatTime(59900) --> "04:38:20 PM"

Задача 5

Дана строка с текстом и число - максимально разрешенная длина текста. Если длина строки больше разрешенной, то нужно заменить конец строки на троеточие таким образом, чтобы ее длина была меньше или равна максимально разрешенной (с учетом троеточия). Если длина строки меньше или равна максимально разрешенной, то строка должна остаться неизменной.

Кроме того, ваша функция должна выбрасывать исключение типа RangeError, если в нее передали отрицательное или нулевое значение maxLength.

Примечание: используйте специальный символ Unicode для троеточия: "ellipsis".

Задача 6

Дан массив чисел. Найти максимальное, минимальное и среднеарифметическое значение из этого массива. Если в массиве нет значений для обработки, все результаты должны быть равны null

Например:

getStats([3, 37, 45, 80, 1, 50, 36, 75, 77, 26]) --> {
    max: 80,
    min: 1,
    avg: 42.4
}
getStats([86, 30, 70, 19, 68, 75, 10, 49, 26, 37]) --> {
    max: 86,
    min: 10,
    avg: 47
}

Задача 7

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

Примеры:

filterUnique([10, 22, 14, 10, 28, 10, 14, 62, 32]) --> [10, 22, 14, 28, 62, 32];
filterUnique([3, 14, 15, 92, 6, 5, 35]) --> [3, 14, 15, 92, 6, 5, 35];
filterUnique([8, 2, 2, 3, 8, 2, 2, 3]) --> [8, 2, 3];

(*) Попробуйте решить задачу с помощью встроенного типа Set (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) и spread оператора. Результат вас удивит.

Задача 8

Найти символ с максимальным числом вхождений в строке. Если таких символов несколько, то можно вернуть любой из них.

Пример:

getTopLetter("CAATGCCATA") --> "A";

Задача 9

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

Например, пусть есть три объекта:

let package0 = {'name': 'boots', 'weight': 10.3, 'price': 122, 'fragile': false, 'owner': 'Michael Caine'},
    package1 = {'price': 31.5, 'fragile': true, 'owner': 'Tom Cruise', 'address': 'Washington DC, Ave. 144/5'},
    package2 = {'price': 103.25, 'charged': true, 'fromCountry': 'India', 'volume': '10 L'},
    result = mergeObjects([package0, package1, package2]);

После объединения этих объектов получится новый объект:

{
    name: ["boots"],
    weight: [10.3],
    price: [122, 31.5, 103.25],
    fragile: [false, true],
    owner: ["Michael Caine", "Tom Cruise"],
    address: ["Washington DC, Ave. 144/5"],
    charged: [true],
    fromCountry: ["India"],
    volume: ["10 L"]
};

Задача 10 (*)

Написать алгоритм преобразования числа в формат римских цифр.

About

Practice 1

License:MIT License


Languages

Language:JavaScript 100.0%