Код Senior Реализация с нуля обновлено

Сложение через удалённый вызов

Условие

addRemote(a, b) складывает только два числа и делает это асинхронно. Напиши add(...args), которая возвращает промис с суммой любого количества аргументов. Оператор плюс использовать нельзя. Ноль аргументов даёт 0, один - само число.

Что проверяют тесты

  • три числа

  • шесть чисел

  • один аргумент - без вызовов

  • без аргументов

  • число вызовов на единицу меньше количества аргументов

Как подойти

Прямолинейное решение - последовательная свёртка за n−1 вызовов, но все они выстроены в цепочку, и общее время равно сумме задержек. Улучшение, которое ждут на follow-up: складывать попарно деревом через Promise.all, тогда глубина ожидания логарифмическая вместо линейной, при том же числе вызовов. Граничные случаи с нулём и одним аргументом надо назвать самому - в условии их нет.

Подсказки: 3
  1. Свёртка последовательными вызовами: аккумулятор плюс следующий аргумент.
  2. Один аргумент возвращается без единого удалённого вызова.
  3. Попарное сложение деревом сократит число последовательных ожиданий.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.