Дан список `events` — sorted список tuples `(user_id, day_int)` где day_int — порядковый номер дня (0, 1, 2...). Для каждого дня вычислите: сколько уникальных юзеров активны в этот день И были активны хотя бы раз за предыдущие 7 дней. Верните dict {day: rolling_7d_users}. Аналитический контекст: rolling-retention в чистом Python для дашборда без pandas. Реализуй `rolling_retention(events, window=7)` — возвращает dict.
algorithms python real-da hash-map
Задача «Rolling 7-day retention без pandas» учит решать алгоритмические задачи на Python: оценивать сложность по времени и памяти и выбирать подходящую структуру данных. Такие задачи дают на собеседованиях в Tinkoff / Ozon (DA-real) и других IT-компаниях. Уровень средний — типичная боевая задача на уверенный Python.
Сначала разбери условие и формат входа-выхода, прикинь крайние случаи (пустой ввод, дубли, NaN). Затем выбери структуру данных и собери решение по шагам — начни с простого рабочего варианта, потом оптимизируй сложность. Код пишешь и запускаешь прямо в браузере: Python-тренажёр исполняет его через Pyodide (pandas, numpy, scipy) и проверяет результат автоматически.
На собеседовании по Python для аналитика ценят чистый читаемый код, корректную обработку крайних случаев (пустой ввод, дубли, None) и умение вслух оценить сложность по времени и памяти. Часто просят не просто решить, а разобрать альтернативные подходы и показать, где наивное решение сломается на большом объёме данных.
Прокачать Python для аналитики — бесплатный курс «Pandas с нуля» и Python-тренажёр.
Открыть задачу в тренажёре → ← Все Python-задачи