Цепочка промежуточных обработчиков
Задача по программированию с проверкой онлайн
- Сложность
- Средняя
- Языки
- Python
- JavaScript
- TypeScript
- Java
- Go
- Темы
- Функции и замыкания
Запрос — целое число. Он проходит через цепочку промежуточных обработчиков (middleware), как луковица: каждый слой что-то делает «на входе», передаёт запрос следующему слою и затем что-то делает с ответом «на выходе». В самом центре стоит обработчик, который возвращает полученное число без изменений.
Слои записаны строками имя:k (k — целое, может быть отрицательным), первая строка — самый внешний слой:
add:k— передать дальшеx + k; ответ вернуть как есть;mul:k— передать дальшеx * k; ответ вернуть как есть;wrap:k— передатьx, к ответу прибавитьk;scale:k— передатьx, ответ умножить наk;cap:k— передатьx, ответ ограничить сверху числомk(взять меньшее из ответа иk);limit:k— если текущийxбольшеk, сразу вернуть-1, не вызывая внутренние слои; иначе передатьxдальше, ответ вернуть как есть. Внешние слои при этом всё равно обработают это-1на выходе.
Дан список слоёв middlewares и список запросов requests. Верните ответ на каждый запрос; запросы не влияют друг на друга. Пустая цепочка возвращает запрос как есть. Значения помещаются в 32 бита.
Пример: ["add:1", "limit:10", "wrap:5"], [3, 20] → [9, -1]: для 3 вход даёт 4, limit пропускает, центр возвращает 4, wrap прибавляет 5; для 20 вход даёт 21, limit обрывает цепочку.
Источник: задача CodeShare