Конвейер именованных шагов над списком

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

Сложность
Средняя
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Функции и замыкания
Массивы и списки

Дан конвейер: список строк steps — имена шагов, которые применяются по очереди к списку целых values; результат каждого шага — вход следующего. Верните итоговый список. Пустой конвейер возвращает список без изменений.

Шаг записывается как имя или имя:k, где k — целое (может быть отрицательным):

  • add:k, mul:k — прибавить k / умножить на k каждый элемент;
  • square, neg — возвести в квадрат / сменить знак у каждого элемента;
  • keep_even, keep_odd — оставить чётные / нечётные (порядок сохраняется);
  • keep_gt:k, keep_lt:k — оставить элементы строго больше / строго меньше k;
  • dedupe — убрать повторы, оставив первое вхождение каждого значения;
  • sort — по возрастанию; reverse — развернуть;
  • take:k — оставить первые k элементов (или все, если их меньше); drop:k — отбросить первые k (или все).

В тестах k для take и drop не отрицательно, все имена известны. Значения помещаются в 32 бита.

Пример: ["add:1", "keep_even", "square"], [1, 2, 3, 4] → [4, 16] (после add:1: [2, 3, 4, 5], после keep_even: [2, 4]).


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

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

Ещё задачи

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