Цена тарифа МТС в конструкторе — tariff(base, gb, minutes): абонплата плюс 15 ₽ за гигабайт и 2 ₽ за минуту. Абонплата известна сразу, гигабайты и минуты пользователь выбирает позже.
Напишите curry(fn). Каррированная функция принимает аргументы любыми порциями и вызывает fn, когда их набралось fn.length. Частично применённую функцию можно вызывать много раз с разными продолжениями, вызовы не должны мешать друг другу.
В работе: Конфигурация обработчиков, частичное применение в утилитах, функциональный стиль в Redux.
Пример 1: по одному
Аргументы теста
[["c", [[300], [10], [100]]]]
Ожидается
[650]
Пример 2: все сразу
Аргументы теста
[["c", [[300, 10, 100]]]]
Ожидается
[650]
Как проверяем
Объявите
curry — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 6: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function curry(fn) // → функция
Источник: на задачах МТС: конструктор тарифа. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.