Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

259
Views
¿Cómo extruir y ejecutar el contenido entre paréntesis?

Necesito ejecutar una expresión de acuerdo con el Orden de operaciones y no puedo encontrar la manera de resolver los corchetes uno al lado del otro.

Recibo una expresión como una cadena -> "(agregar (multiplicar 4 5) (agregar 13 1))"

No sé cómo resolver este caso paralelo.

Cómo lo tengo funcionando para un caso en el que todo está anidado tomando los corchetes más internos y luego resolviendo el siguiente de esta manera:

 // Find innermost equasion const findInnerEq = (str) => str.substring(str.lastIndexOf("(") + 1, str.lastIndexOf(")")); // Find Brackets RegEx const brakets = /(?<=\().*(?=\))/g; // Changing RegEx function const changeRE = (str) => str.slice(str.lastIndexOf("(") + 1, str.indexOf(")")); // Return calculation const calculate = (str) => { let exp = findInnerEq(str).toLowerCase().split(" "); let calc = exp .slice(1) .map((element) => parseInt(element)) switch (exp[0]) { case "add": if (calc.length > 2){ return calc.reduce((acc, cur) => acc + cur, 0); } return calc[0] + calc[1] break; case "multiply": return calc.reduce((acc, cur) => acc * cur, 1); break; default: console.log("Please enter valid expression"); process.exit(); } }; // Recursive function const calculator = (str) => { let curString; if (str.match(brakets)) { curString = str; let changingReg = `\(${changeRE(curString)}\)`; curString = curString.replace(changingReg, calculate(curString)); return calculator(curString); } else { return str; } }; console.log(calculator("(add 2 (multiply 2 2))")); console.log(calculator("(add (multiply 2 2) (add 2 2)"));

¿Cómo puedo lidiar con los corchetes uno al lado del otro?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Bueno, parece un problema clásico de CS, y lo estás abordando mal.

En cambio, lo que debe hacer es usar pilas, empujando elementos hacia ellas hasta que encuentre ')', que le indicará que ejecute la acción en la pila recopilada hasta el momento.

Aquí hay una de las explicaciones https://orkhanhuseyn.medium.com/what-are-stack-based-calculators-cf2dbe249264

about 4 years ago · Juan Pablo Isaza Report

0

prueba esto:

 let arr = str.split("(").join("|:|:|:|").split(")").join("|:|:|:|").split("|:|:|:|") //arr is now an array that has been split at both ( and ) // the middle value: arr[arr.length/2] //evaluate it, and then combine it with arr[arr.length/2+1] and arr[arr.length/2-1] //continue the cycle until your whole expression is evaluated
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!