I would like to know if anyone has info or experience on how to do something which sounds simple but doesn’t look like it when trying to program it.
The idea is : give a string containing an equation, such as : “2*x = 10” for example (this is simple, but it could get very complex, such as sqrt(54)*35=x^2; and so on….) and the program would return x = 5 and possibly give a log of how he got there.
Is this doable ? If so, does anyone have a lead ? For info there is this site (http://www.numberempire.com/equationsolver.php) which does the same thing in PHP, but isn’t open source.
Thanks for any help !
This is called “parsing”, and although computer science has already solved this problem it isn’t simple at all until you understand it thoroughly. There’s an entire computer-science discipline that describes how to solve this problem. In C you must define the grammar of your input (possibly with precedence rules in it), then perform lexical analysis on your input, then parse the result and finally evaluate your parse tree.
In languages such as Ruby, however, because you have such thorough support for string manipulation and because you have such tremendous runtime power you can solve your problem with a single line of code like so:
Yes, that will cover more than what you ask for.