calc("1/3-8/4+1")
всё равно не понял
что конкретно этот калькулятор должен показывать?
он решает стрингу, которую ты ему даёшь
Он дал тебе способ вычислить результат одного варианта
Ну вот переберешь все, один из них то сто тебе надо)
да, именно это и должна делать функция)
если в игре фиксированное количество чисел в примере - могу дать ответ :)
Ну при переборе ты должен вычислить результат одного варианта, чтоб узнать подходит ли он. Вот тебе и дали способ вычисления. Тебе осталось реализовать перебор)) как вариант 4 вложенных for
Если ты решил идти перебором, то твое решение можно на любое колво чисел расширить
расширить можно, но я тупо написал 4 вложенных цикла, и мне лень думать, как это оптимизировать
а можешь скинуть пример?
Предупреждаю чувствительных к говнокоду не смотреть function solve(numbers, shouldResultTo) { const operands = ['*', '/', '+', '-'] const operate = (a, operand, b) => { switch (operand) { case '*': return a * b case '/': return a / b case '+': return a + b case '-': return a - b } } for (let operand of operands) { const operandStack = [operand] const result1 = operate(numbers[0], operand, numbers[1]) for (let operand of operands) { operandStack.push(operand) const result2 = operate(result1, operand, numbers[2]) for (let operand of operands) { operandStack.push(operand) const result3 = operate(result2, operand, numbers[3]) for (let operand of operands) { operandStack.push(operand) const result4 = operate(result3, operand, numbers[4]) if (result4 === shouldResultTo) return operandStack operandStack.pop() } operandStack.pop() } operandStack.pop() } operandStack.pop() } }
нет брат такое не катит)
я предупреждал
а вот здесь понятнее)) при вызове функции просто массив чисел передаёшь, и результат?
solve([1,2,3,4,5], 15) // => ['*', '*', '+', '+'] undefined, если решения не найдено, либо можно throw дописать в конце
я вообще задачу не понял, похоже
Тут видимо приоритетность операций вообще не учитана
а как ты понял?) что твой код решает?)
считает просто то, шо передадут. в принципе нет проблем его же использовать для того, чтоб сделать то, что нужно вам, но смысла уже не вижу
ааа) так туда же можно строку передавать со значениями из объекта, как в самом первом решении
calc('1+1+1') // => 3
только если числа двузначные, то оно работать не будет, надо [...] на split заменить. но по заданию были цифры
Обсуждают сегодня