Требуется разработать программу, которая бы вычисляла «трендовость» пользователей и хештегов в твитах.
Входные данные
Файл постов, каждая строчка которого содержит следующую информацию:
- Время поста
ts
(в формате POSIX timestamp).
- Идентификатор пользователя
user_id
(целое положительное число).
- Набор хештегов, связанных с постом,
hashtags
(в формате <hashtag_1>, <hashtag_2>, ..., <hashtag_N>
).
Задача
Реализовать класс, который инкапсулирует записи о постах и имеет возможность выполнять над ними следующие операции:
- Добавить запись.
- Удалить запись.
- Удалить все записи.
- Найти топ-N (N задается при запросе) хештегов в заданном диапазоне времени (ts начала и конца интервала). Топ-N — N наиболее популярных хештэгов.
- Определить «трендовость» пользователя по заданному user_id и топ-N тегов. «Трендовость» — отношение количества употреблений хэштегов из топ-N к общему количеству употреблений хэштегов.
Отдельно должен быть реализован вывод результатов в консоль.
Примечания
- К реализуемому классу могут производиться множественные запросы генерации топ-N. Каждый раз читать файл не следует.
- В реализуемом классе лучше хранить простые структуры с нужной информацией. Необходимо реализовать парсер, который преобразует текстовую строку в такую структуру.
- При выборе контейнера для хранения записей стоит задуматься о производительности приложения.
Тестирование
В рамках задания необходимо разработать тесты для всех реализуемых операций. Подумайте, как аккуратно и максимально полно протестировать вычисление top-N.