Expire stale transient memories while preserving context needed for active goals.
Full problem description visible. Upgrade to unlock the editor, test cases, and solution.
Implement TTLMemory(ttl_seconds, count_tokens, max_tokens).
- add(role, content) appends a message with the current timestamp.
- render() returns messages that:
1. Have not expired (age < ttl_seconds).
2. Fit within max_tokens (dropping oldest non-expired first).
Always keep the first system message if present.
- stats() returns {"total_added": int, "expired": int, "active": int}.
- total_added: total messages ever added (excluding evicted).
- expired: messages removed due to TTL.
- active: messages currently in the internal store.
₹999/monthLimited period launch pricing.
Get the full problem statement, test cases, interactive editor, solution explanation, and visual diagram.
import time
class TTLMemory:
def __init__(self, ttl_seconds: int, count_tokens, max_tokens):
self.ttl_seconds = ttl_seconds
self.count_tokens = count_tokens
self.max_tokens = max_tokens
self.messages: list[dict] = []
self.total_added = 0
self.expired_count = 0
def add(self, role: str, content: str) -> None:
self.messages.append({
"role": role,
"content": content,
"timestamp": time.time()
})
self.total_added += 1
def render(self) -> list[dict]:Filter expired, apply budget, return active messages
def stats(self) -> dict:
active = len(self.messages)
return {
"total_added": self.total_added,
"expired": self.expired_count,
"active": active,
}Already have Pro access? Sign in