@vaxab23111 Тоже решил поучавствовать на разминки мозга, на 100% не претендует
function getCooficient(exp) { var matched = exp.match(/(\d+)[\s*+-/]*[A-z]/) if (matched) { return parseFloat(matched.pop()) } return 1 } function evalSide(exp) { var cleanExp = exp.replace(/\d*[\s*+-/]*[A-z]/, '') if (!cleanExp) return 0 return eval(cleanExp) } function invertResult(num) { return num > 0? -num : num } function solveEquation(equation) { var parts = equation.split("=") var leftSide = parts[0].trim() var rightSide = parts[1].trim() var coefficient = 1 var leftSideResult = evalSide(leftSide) var rightSideResult = evalSide(rightSide) if (/[A-z]/.test(leftSide)) { var coefficient = getCooficient(leftSide) leftSideResult = invertResult(leftSideResult) } else { var coefficient = getCooficient(rightSide) rightSideResult = invertResult(rightSideResult) } return (leftSideResult + rightSideResult) / coefficient } log(solveEquation("6 * X=14")); // выводит 2.3333333333333335 log(solveEquation("X+2=80")); // выводит 78 log(solveEquation("12+15=X")); // выводит 27 log(solveEquation("6 *X + 2=14")); // выводит 2 log(solveEquation("X+2 * 2=80")); // выводит 76 log(solveEquation("12+15/5=X")); // выводит 15 [[BAS_VARIABLE]] = solveEquation("6 * X=14")Как правильно реализовать цикл?
-
Есть дерево каталогов записанное в файл скриптом. Вот небольшой отрезок этого дерева:

Задача - удалить все корневые и промежуточные каталоги (отмечены жёлтым) и оставить только конечные каталоги продукции.Пытаюсь реализовать в цикле по принципу: если последующая строка содержит в себе предыдущую, то удаляем предыдущую. Иными словами, все корневые каталоги являются подстроками у любых вложенных в них каталогов, и напротив, конечный каталог не будет являться подстрокой другого конечного каталога.
Пробую реализовать в коде, но что-то пошло не так:
var list = VAR_LIST var length = list.length for (i=0;i<length;i++){ if (i==0){ var second = list[i] } else { var first = list[i] var j = i - 1 var second = list[j] if(first.indexOf(second) + 1) { list[j] = '<delete>' } } } VAR_NEW_LIST = listСтавлю вместо удаляемых элементов <delete> и при следующем цикле просто перезаписываю всё, что не "<delete>" в новый список. Иначе если удалять сразу, нумерация массива съезжает.
Но этот алгоритм удаляет почему-то и конечные каталоги (хотя не все). Не могу понять, где я допустил ошибку.
-
-
@Pragmatik Это существующие каталоги? Или просто строки?
-
VAR_LIST=VAR_LIST.filter(function(item,i){ if(VAR_LIST.length>i+1){ return VAR_LIST[i+1].indexOf(item)<0 } return true; })