Контест Middle Потоки и буферы обновлено

Топ эндпоинтов по access-логу с нормализацией маршрутов

Условие

Дан access-лог. Первая строка: k n. Дальше n строк вида <МЕТОД> <путь> <статус> <мс>.

Нужно найти k самых частых эндпоинтов. Эндпоинт это метод плюс нормализованный путь: строка запроса (?...) отбрасывается, а каждый сегмент пути, состоящий только из цифр, заменяется на :id. Так /api/users/15?full=1 и /api/users/7 это один эндпоинт /api/users/:id.

Выведи до k строк <число запросов> <МЕТОД> <путь> <среднее время>, среднее округляется вниз до целого. Порядок: по убыванию числа запросов, при равенстве по строке "<МЕТОД> <путь>" в порядке возрастания кодов символов.

n ≤ 1000.

Пример

2 5
GET /api/users/15 200 30
GET /api/users/7 200 50
POST /api/orders 201 120
GET /api/users/15?full=1 404 10
POST /api/orders 500 300
3 GET /api/users/:id 30
2 POST /api/orders 210

Как подойти

Подсказки: 2
  1. Сначала нормализуй путь: отрежь ?, замени числовые сегменты.
  2. Храни для ключа число запросов и сумму времени.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.