Esempio n. 1
0
        // 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(),
            })