Поток сообщений по порядку

Medium
AsyncQueueYandex

Сообщения приходят асинхронно с номером. Нужно выводить их строго по порядку, начиная с 1.

Реализуйте класс OrderedMessages:

  • receive(id, text) — принять сообщение. Если id — следующий ожидаемый, вернуть все сообщения, которые можно вывести подряд (массив строк). Иначе — буферизовать и вернуть пустой массив.
const om = new OrderedMessages();
om.receive(1, "a") // => ["a"]
om.receive(3, "c") // => []      — 3 пришло раньше 2, буферизуем
om.receive(2, "b") // => ["b", "c"] — теперь можем вывести 2 и 3
Подсказка

Проверяют умение работать с буферизацией и состоянием. Задача моделирует реальную ситуацию: TCP-пакеты или WebSocket-сообщения могут прийти не по порядку.

Подсказка

Ключевая идея: всегда кладите сообщение в буфер (даже если id совпадает с ожидаемым), а потом вытаскивайте из буфера подряд в цикле — так код проще и единообразен.

Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода