Контест Middle Каналы и select обновлено

Батчер событий: размер пачки и сброс по тику

Условие

Производитель (своя горутина) отправляет в канал события: числа и сигналы tick. Батчер (другая горутина) собирает числа в пачки и отправляет пачку на вывод:

  • когда в пачке стало k чисел;
  • при tick, если пачка не пуста;
  • при закрытии входного канала, если пачка не пуста.

Ввод: k n (1 ≤ k ≤ 1000, 1 ≤ n ≤ 4000), затем n токенов: целое число или tick.

Вывод: по строке на пачку, числа через пробел, затем строка batches B.

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

Пример

3 10
1 2 tick 3 4 5 6 tick tick 7
1 2
3 4 5
6
7
batches 4

Как подойти

Канал событий, горутина-батчер с текущим слайсом, новый слайс после каждой отправки.

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

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