/// <summary> /// Solves the specified transaction as string. /// </summary> /// <param name="transactionAsString">The transaction as string.</param> /// <returns></returns> public bool Solve(string transactionAsString) { var retval = false; if (string.IsNullOrEmpty(transactionAsString)) { throw new ArgumentNullException("Unable to solve a transaction if transactionAsString is missing"); } var enquiry = $"how many {Transaction.SelectedTransaction} is"; if (transactionAsString.StartsWith(enquiry)) { var contents = transactionAsString.Substring(enquiry.Length + 1); var parts = contents.Split(' '); var lastUnit = parts.Last().Trim(); var value = Transaction.Units[lastUnit]; var romanNumber = (new RomanNumber()).Parse(string.Join(" ", parts.Take(parts.Length - 1)), Transaction.Symbols).Calculate(); var result = romanNumber * value + " " + Transaction.SelectedTransaction; retval = true; SolutionAsString = contents + " is " + result; OnSolveCompleted?.Invoke(this, new EventArgs()); } return(retval); }
/// <summary> /// Solves the specified transaction as string. /// </summary> /// <param name="transactionAsString">The transaction as string.</param> /// <returns></returns> public bool Solve(string transactionAsString) { var retval = false; if (string.IsNullOrEmpty(transactionAsString)) { throw new ArgumentNullException("Unable to solve a transaction if transactionAsString is missing"); } var enquiry = $"how much is"; if (transactionAsString.StartsWith(enquiry)) { var contents = transactionAsString.Substring(enquiry.Length + 1); var value = (new RomanNumber()).Parse(contents, Transaction.Symbols).Calculate(); var result = value.ToString(); retval = true; SolutionAsString = contents + " is " + result; OnSolveCompleted?.Invoke(this, new EventArgs()); } return(retval); }
/// <summary> /// Raises the unable to understand notification. /// </summary> public void RaiseUnableToUnderstandNotification() { SolutionAsString = "I have no idea what you are talking about"; OnSolveCompleted?.Invoke(this, new EventArgs()); }