// TODO: Clean up and build API static void Main(string[] args) { var input = "35x-01x*4+91*0+3340/2-x"; Console.WriteLine("Input: " + input); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Tokenized:"); var tokenizer = new Tokenizer(); var tokenized = tokenizer.Tokenize(input); List(tokenized); Console.WriteLine(); Console.WriteLine("Expanded:"); var expander = new Expander(); var expanded = expander.Expand(tokenized); List(expanded); Console.WriteLine(); Console.WriteLine("Grouped:"); var grouper = new Grouper(); var grouped = grouper.Group(expanded); List(grouped); Console.WriteLine(); Console.WriteLine("Cleaned:"); var cleaner = new Cleaner(); var cleaned = cleaner.Clean(grouped); List(cleaned); Console.WriteLine(""); Console.WriteLine(""); Format(cleaned); var calc = new Calculator(); var dict = new Dictionary <string, double>() { { "x", 2 } }; Console.WriteLine("Variables: x=2"); Console.WriteLine("Calculated: " + calc.Calculate(cleaned, dict)); }
public IEnumerable <GroupCalculation> Calculate(Grouping grouping, IEnumerable <Person> people) { var groups = Grouper.Group(grouping, people); return (groups .Select(g => new GroupCalculation { Grouping = grouping, Person = g.Person, PersonInterest = SimpleInterestCalculator.Calculate(g.Person), Resolvers = g.Resolvers.Select(r => (r, SimpleInterestCalculator.Calculate(r))) .ToList(), })