Задать вопрос
@akdl

Как выполнять вычисления с помощью функций (результат вызова предыдущей должен быть аргументом следующей)?

Вот условие:
На этот раз мы хотим написать вычисления с использованием функций и получить результаты. Давайте посмотрим на некоторые примеры:

seven(times(five())); // must return 35
four(plus(nine())); // must return 13
eight(minus(three())); // must return 5
six(dividedBy(two())); // must return 3

Требования:

Должна быть функция для каждого числа от 0 ("ноль") до 9 ("девять")
Должна быть функция для каждой из следующих математических операций: плюс, минус, умножить, разделить на
Каждое вычисление состоит ровно из одной операции и двух чисел
Самая внешняя функция представляет левый операнд, самая внутренняя функция представляет правый операнд.
Деление должно быть целочисленным. Например, это должно вернуть 2, а не 2,666666...:

eight(dividedBy(three()));
  • Вопрос задан
  • 450 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
"Числовые" функции проверяют, является ли переданное им значение функцией, если да - вызывают её со своим числом в качестве аргумента, нет - просто возвращают число.

Функции операций принимают второе число, возвращают функцию, принимающую первое число и производящую над переданными числами операцию.

const [ zero, one, two, three, four, five, six, seven, eight, nine ] = Array.from(
  { length: 10 },
  (_, i) => f => f instanceof Function ? f(i) : i
  // или
  // (_, i) => f => f?.(i) ?? i
);

const plus = a => b => b + a;
const minus = a => b => b - a;
const times = a => b => b * a;
const dividedBy = a => b => b / a | 0;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Решаю задачи на codewars, не могу решить задачу с функциями?

Да, не можете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы