Задача
Напишите калькулятор, который работает через цепочку функций-слов: числа zero–nine и операции times, dividedBy, plus, minus.
Пример
seven(times(five())); // => 35Решение
Оптимальное решение
// Временная сложность: O(1) — все операции константны // Пространственная сложность: O(1) — фиксированное количество данных (10 чисел + 4 операции) function createCalculator(scope = {}) { // Числа 0-9 const numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; // Операции как функции const operations = { '*': (a, b) => a * b, '/': (a, b) => a / b, '+': (a, b) => a + b, '-': (a, b) => a - b, }; // Создаём числовые функции numbers.forEach((name, value) => { scope[name] = function (operation) { // Если передан объект операции - выполняем if (operation?.sign) { return operations[operation.sign](value, operation.number); } // Иначе возвращаем само число return value; }; }); // Создаём функции операций scope.times = (num) => ({ number: num, sign: '*' }); scope.dividedBy = (num) => ({ number: num, sign: '/' }); scope.plus = (num) => ({ number: num, sign: '+' }); scope.minus = (num) => ({ number: num, sign: '-' }); return scope; }