Код Senior Декораторы обновлено
Декоратор ограничения частоты вызовов
Условие
Напишите декоратор-фабрику limit(calls, period, clock): функция может быть вызвана не более calls раз за любые period секунд (скользящее окно). Время берётся вызовом clock(). Если лимит превышен, обёртка не вызывает функцию и возвращает None. Проверка run(calls, period, times) подставляет фальшивые часы с моментами из times и возвращает результаты вызовов.
Примеры
run(2, 10, [0, 1, 2, 10, 11, 12]) // [0, 1, null, 3, 4, null]
run(1, 5, [0, 4, 5, 9, 10]) // [0, null, 2, null, 4]
run(3, 1, [0, 0, 0, 0]) // [0, 1, 2, null]
Как подойти
Подсказки: 2
dequeмоментов успешных вызовов.- Граница окна: вызов в момент
now - periodуже не считается.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.