Сообщения приходят асинхронно с номером. Нужно выводить их строго по порядку, начиная с 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 совпадает с ожидаемым), а потом вытаскивайте из буфера подряд в цикле — так код проще и единообразен.