/// <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); }
/// <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); }