В проекте используется фрейморк для тестирования mocha
в совокупности с библиотекой chai
.
Ранее опыта использования и написания тестов не имел, поэтому была выбрана одна из самых популярных связок, для которой несложно найти гайды и рекомендаций, а также относительно легко можно найти ответ на какой-либо вопрос, воспользовавшись Stackoverflow.
Для запуска тестов:
npm run test
Работоспособность кода проверялась под Node v9.11.2.
Из файла index.js экспортируется функция optimizeEnergyConsumption
, которая принимает на вход объект с сигнатурой, определенной в data/input.json
, и возвращает объект с сигнатурой, определенной в data/output.json
.
Условие задачи:
Цель задания — реализовать алгоритм работы «умного дома», который будет производить расчёт стоимости потребляемой электроэнергии в день и возвращать рекомендованное расписание использования электроприборов оптимизируя денежные затраты.
На вход подаются данные о тарифах, электроприборах и их максимальной потребляемой мощности.
Тарифы — это периоды в сутках, для которых задана отдельная стоимость киловатт-часа.
Приборы — это набор подключенных к «умному дому» электроприборов, для которых известна потребляемая мощность, длительность цикла работы, а также время дня, когда они используется. Каждый прибор должен отработать один цикл в сутки. Максимально потребляемая мощность указывается в ватт-часах.
На выходе должно получиться суточное расписание включения электроприборов. Каждый прибор за сутки должен отработать один цикл, а суммарная стоимость потраченной электроэнергии должна быть минимальной.
- При значении mode — day период с 07:00 до 21:00.
- При значении mode — night период с 21:00 до 07:00 следующего дня.
- При значении mode — undefined период отсутствует, прибор может работать в любой промежуток времени.