# Erlang test task Напишите приложение `token_bucket`, реализующее алгоритм текущего ведра с одним ведром. При реализации используйте ETS и функции для работы со счетчиками (ets:update_counter/3,4). Интерфейс приложения: ``` token_bucket:limit_is_reached(UserId :: term(), MaxRps :: non_neg_integer()) -> boolean(). ``` Если лимит запросов достугнут - функция возвращает true, иначе - false. UserId - произвольный идентификатор. MaxRps указывает максимальное количество запросов в секунду для данной проверки (представим, что мы берем данное значение динамически из конфига). При MaxRps = 0 проверка отключается и функция всегда возвращает false (лимит не достигнут). Для сборки приложения используйте erlang.mk. Приложение будет проверяться на работоспособность в терминале следующим образом: ``` $ make run 1> token_bucket:limit_is_reached(123, 3). false 2> [token_bucket:limit_is_reached(123, 3) || _ <- lists:seq(1,100)]. [false,false,false,true,true,true|...] ``` При реализации важна работоспособность алгоритма и организация приложения. Наша цель - увидеть, как вы пишите код.