Задание на JS
Запуск
Выводит отформатированный JSON с результатом вычисления в stdout
Установка зависимостей
npm i
- Запуск на тестовых данных
npm run start-dev
- Запуск с данными из JSON файла
npm start <путь к файлу>
Запуск тестов
npm run test
getSchedule
на экземпляре класса SmartHome
возвращает объект с расписанием.
Вызов метода const data = {
devices: [
{id: '1a', power: 200, duration: 5},
{id: '1b', power: 1500, duration: 2},
],
rates: [
{value: 1.5, from: 11, to: 17},
{value: 3, from: 17, to: 11}
],
maxPower: 2000
}
const sh = new SmartHome(data);
const result = sh.getSchedult();
console.log(result);
Описание
Перед началом режимы работы устройств и интервалы активности тарифов приводятся к массивам часов. Устройства сортируются по убыванию мощности. Алгоритм, проходя по устройствам, начинает поиск подходящих для включения устройства часов (пересекающиеся значения в массивах режима работы устройства и активности тарифа), от наиболее выгодных к менее выгодным. Для нахождения пересекающихся значений использовал библиотеку lodash.intersection
. Для тестов использовал jest
.