Шина событий с именованными обработчиками
Задача по программированию с проверкой онлайн
- Сложность
- Средняя
- Языки
- Python
- JavaScript
- TypeScript
- Java
- Go
- Темы
- Функции и замыкания
- Классы и ООП
Шина событий хранит общий счётчик (в начале 0) и для каждого события — список зарегистрированных обработчиков в порядке регистрации. Обработчики названы и меняют счётчик: inc — прибавить 1, dec — вычесть 1, double — умножить на 2, negate — сменить знак, reset — обнулить.
Дан список команд commands; верните по числу на каждую команду. Слова в команде разделены одним пробелом:
on событие обработчик— добавить обработчик в конец списка события;once событие обработчик— то же, но обработчик сработает только при ближайшемemitэтого события и сразу после срабатывания удаляется;off событие обработчик— убрать самую раннюю регистрацию этого обработчика у этого события (обычную илиonce); если такой нет, ничего не делать;emit событие— выполнить по порядку все обработчики события (один и тот же обработчик, зарегистрированный дважды, срабатывает дважды); события без обработчиков не меняют счётчик.
Результат для on, once и off — число обработчиков этого события после команды; для emit — значение счётчика после всех обработчиков.
Пример: ["on tick inc", "on tick double", "emit tick", "off tick inc", "emit tick"] → [1, 2, 2, 1, 4].
Источник: задача CodeShare
Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).