К задачам

Скользящее среднее за последние 5 минут

СредняяАлгоритмы
Лучше работает на десктопе
ООПДвусторонняя очередьСкользящее окно

Реализуйте класс MovingAvg, который хранит значения метрики и возвращает среднее за последние 5 минут.

Метод now() уже реализован внешней системой и возвращает текущее время в секундах. В решении можно вызывать self.now(), но писать реальную работу с часами не нужно.

Интерфейс

class MovingAvg:
    def record(self, value: int) -> None:
        ...

    def mean(self) -> float:
        ...

    def now(self) -> int:
        ...
record(value) записывает значение в текущий момент времени. mean() возвращает среднее всех записанных значений за последние 300 секунд. Если актуальных значений нет, верните 0.0.

В тренажере тесты вызывают helper moving_average_results(events), который уже есть в starter code и подменяет now() тестовым временем.

Примеры

Пример 1

Вход:
self = [["record",0,10],["record",10,20],["mean",10]]
Выход:[15]

Среднее двух свежих значений

Пример 2

Вход:
self = [["record",0,10],["record",301,20],["mean",301]]
Выход:[20]

Старое значение выпало из окна

Пример 3

Вход:
self = [["mean",100]]
Выход:[0]

Нет актуальных значений

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
10:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Moving average за последние 5 минут — Алгоритмы задача — ML Mentor