Эмиттер событий

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Темы
Словари и множества
Массивы и списки
Классы и ООП

Эмиттер событий принимает команды, имена событий и обработчиков — слова из латинских букв и цифр:

  • on EVENT NAME — добавить обработчик NAME на событие EVENT;
  • once EVENT NAME — добавить обработчик, который сработает один раз и сам удалится;
  • off EVENT NAME — удалить все обработчики NAME этого события (и обычные, и одноразовые);
  • emit EVENT — вызвать обработчики события в порядке добавления.

На каждую команду emit в ответ идёт одна строка: имена сработавших обработчиков через запятую в порядке вызова или "-", если обработчиков нет. Одно имя можно добавить несколько раз, тогда оно срабатывает столько раз, сколько добавлено. Одноразовые обработчики удаляются после этого emit.

Верните строки для всех emit по порядку.

Пример: ["on a x", "once a y", "emit a", "emit a", "off a x", "emit a"] → ["x,y", "x", "-"].


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки