hydrognomik / shri18-2-3

ШРИ 2018. Задание на JS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задание на 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.

About

ШРИ 2018. Задание на JS


Languages

Language:JavaScript 100.0%