(UA) IT/Tech Ukrainians in Canada
-
те ж саме без eval: function evaluateExpression(expression) { // Define the operations const operations = { add: (a, b) => a + b, subtract: (a, b) => a - b, multiply: (a, b) => a * b, divide: (a, b) => a / b, }; // Recursive function to evaluate the expression function parse(expr) { // Match the innermost function and its arguments const regex = /([a-zA-Z]+)\(([^()]*)\)/; const match = expr.match(regex); if (!match) { // If no more functions, return the number directly return parseFloat(expr); } const [_, func, args] = match; const argValues = args.split(',').map(arg => parse(arg.trim())); if (!(func in operations)) { throw new Error(`Unknown function: ${func}`); } // Compute the result for the current function const result = operations[func](...argValues); // Replace the evaluated function call in the expression const newExpr = expr.replace(match[0], result); return parse(newExpr); // Recursively evaluate the remaining expression } // Start parsing and evaluating return parse(expression); } // Example usage const input = "multiply(add(subtract(5, multiply(7, 4)), divide(30, 7)), 7)"; console.log(evaluateExpression(input)); // Outputs the evaluated result
-
чат жпт вміє в корявий жс: function evaluateExpression(expression) { // Define the mathematical operations const operations = { add: (a, b) => a + b, subtract: (a, b) => a - b, multiply: (a, b) => a * b, divide: (a, b) => a / b, }; // Replace function names with JavaScript syntax const sanitizedExpression = expression.replace( /(add|subtract|multiply|divide)\(/g, (_, fn) => `operations.${fn}(` // Replace with operations object reference ); // Evaluate the sanitized expression try { const result = eval(sanitizedExpression); // Caution: eval can be unsafe return result; } catch (error) { throw new Error(`Invalid expression: ${error.message}`); } } // Example usage const input = "multiply(add(subtract(5, multiply(7, 4)), divide(30, 7)), 7)"; console.log(evaluateExpression(input)); // Outputs the evaluated result
-
Якщо я правильно поняв що там відбувається, то це не єффективне рішення
-
То якась дічь з евалом))
-
Доречі, я не помітив різницю між епічними та просто високими налаштуваннями. Можно понизити та отримати більш стабільний фпс
-
🤣🤣🤣
-
ні фрізів, ні лагів, хз чому там писали про оптимізацію
-
85-160 фпс на епічних налаштуваннях