MediumPro challengePythonJavaScriptTypeScript

Token Bucket Rate Limiter

Node.jsRate LimitingAlgorithms

Implement a token bucket: capacity C, refill R tokens per ms.
consume(now, n) first refills based on elapsed time (capped at C),
then consumes n tokens if available; returns true/false.

solve(capacity, refillPerMs, requests): requests are [time, n],
returns array of allow/deny.

Sample tests

Test #1Slow refill reaches in 10ms
Input: [5,0.5,[[0,5],[10,5]]]
Output: [true,true]
Test #2Drain to zero
Input: [3,0,[[0,1],[0,1],[0,1],[0,1]]]
Output: [true,true,true,false]
Test #310 tokens, no refill
Input: [10,0,[[0,5],[0,5],[0,1]]]
Output: [true,true,false]
Test #410ms refill at rate 1 fully restores capacity — second request still allowed
Input: [10,1,[[0,10],[10,5]]]
Output: [true,true]
Test #520ms refill restores fully
Input: [10,1,[[0,10],[20,10]]]
Output: [true,true]