/// <summary>
        ///
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public override bool Parse(string input)
        {
            var lexers = input.Split(new[] { " is " }, StringSplitOptions.RemoveEmptyEntries);

            if (lexers.Count() != 2)
            {
                return(false);
            }

            var left = lexers[0].Split(' ');

            if (left.Length < 2)
            {
                return(false);
            }

            var rValue   = int.Parse(lexers[1].Split(' ')[0]);
            var primUnit = lexers[1].Split(' ')[1];

            this.Context.PrimUnit = primUnit;
            var roman      = RepeatChecker.Check(string.Join(" ", left.Take(left.Length - 1)), this.Context.Primitives);
            var calculated = roman.Calculate();

            var unit      = left.Last();
            var unitValue = (double)rValue / (double)calculated;

            this.Context.Units[unit] = unitValue;
            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="question"></param>
        /// <param name="answer"></param>
        /// <returns></returns>
        public override bool Solve(string question, out string answer)
        {
            var qulifier = "how much is";

            if (!question.StartsWith(qulifier))
            {
                answer = null;
                return(false);
            }

            var body  = question.Substring(qulifier.Length + 1);
            var value = RepeatChecker.Check(body, this.Context.Primitives).Calculate();

            answer = value.ToString();
            Console.WriteLine(body + " is " + answer);
            return(true);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="question"></param>
        /// <param name="answer"></param>
        /// <returns></returns>
        public override bool Solve(string question, out string answer)
        {
            var primUnit = this.Context.PrimUnit;
            var qulifier = string.Format("how many {0} is", primUnit);

            if (!question.StartsWith(qulifier))
            {
                answer = null;
                return(false);
            }

            var body      = question.Substring(qulifier.Length + 1);
            var lexers    = body.Split(' ');
            var unit      = lexers.Last().Trim();
            var unitValue = this.Context.Units[unit];
            var value     = RepeatChecker.Check(string.Join(" ", lexers.Take(lexers.Length - 1)), this.Context.Primitives).Calculate();

            answer = (value * unitValue) + " " + primUnit;
            Console.WriteLine(body + " is " + answer);
            return(true);
        }