Mi objetivo es hacer un pequeño programa que entienda las palabras humanas, y hasta ahora me está yendo muy bien gracias a un poco de ayuda.
Decidí comenzar con matemáticas simples antes de hacer otras cosas, pero algo anda mal.
Hasta ahora, el lector humano puede hacer sumas, pero quiero que haga más operaciones como restas, multiplicaciones, divisiones, etc. Tengo esta parte del código que maneja los casos, básicamente si le dices que 'suma...' debería agrega, entiendes la idea, y se ve así:
switch (operator) { case "add": return numbers.reduce((a, b) => Number(a) + Number(b));Genial, así que pensé que debería hacer otro caso y simplemente "restar" y simplemente hacer Número (a) - Número (b), ¿verdad?
Bueno, ahí es donde va el flop, si le digo que reste 2 de 5, me da una respuesta que se ve así:
undefinedCuando lo que quiero que diga es:
-3¿Cómo puedo solucionar este problema? Código fuente completo:
function output(func) { console.log(func) } function read(str) { const dl = str.split(' '); const operator = dl.shift(x => x.includes("add", "sub", "mul", "div")) const numbers = dl.filter(x => Number(x)) switch (operator) { case "add": return numbers.reduce((a, b) => Number(a) + Number(b)); case "subtract": return numbers.reduce((a, b) => Number(a) - Number(b)); } } const result = read( "add 6 and 4" ) output(result)Parece que funciona bien.
function output(func) { console.log(func) } function read(str) { const dl = str.split(' '); const operator = dl.shift(x => x.includes("add", "sub", "mul", "div")) const numbers = dl.filter(x => Number(x)) switch (operator) { case "add": return numbers.reduce((a, b) => Number(a) + Number(b)); case "subtract": return numbers.reduce((a, b) => Number(a) - Number(b)); } } output(read( "add 6 and 4" )) output(read( "subtract 6 and 4" )) output(read( "subtract 2 and 5" )) output(read( "sub 2 and 5" ))