2.1 KiB
2.1 KiB
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;
};
}