Files

2.1 KiB
Raw Permalink Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
594810f028c0303b75339ace Акумуляторна фабрика 5 302222 accumulator-factory

--description--

Проблема, спричинена Paul Graham полягає у створенні функції, яка приймає один (числовий) аргумент, і яка повертає іншу функцію, тобто акумулятор. Повернена акумуляторна функція в свою чергу також бере один числовий аргумент, і повертає суму усіх числових значень, прийнятих до цього часу до цього акумулятора (включаючи початкове значення, передане при створенні акумулятора).

--instructions--

Створіть функцію, яка приймає число n і генерує акумуляторні функції, які повертають суму кожного числа, яке до них додадуть.

Правила:

Не використовуйте глобальні змінні.

Підказка:

Закриття економить зовнішній стан.

--hints--

accumulator має бути функцією.

assert(typeof accumulator === 'function');

accumulator(0) має відображати функцію.

assert(typeof accumulator(0) === 'function');

accumulator(0)(2) має відображати число.

assert(typeof accumulator(0)(2) === 'number');

Перехід у значеннях 3, -4, 1.5 і 5 має видати 5,5.

assert(testFn(5) === 5.5);

--seed--

--after-user-code--

const testFn = typeof accumulator(3) === 'function' && accumulator(3);
if (testFn) {
  testFn(-4);
  testFn(1.5);
}

--seed-contents--

function accumulator(sum) {

}

--solutions--

function accumulator(sum) {
  return function(n) {
    return sum += n;
  };
}