private string GetRomanValueForBiggerNumbers(string romanValue,int quotient,Step step,string accumulatedString) { if (quotient <= 3) romanValue += new string(step.Symbol, quotient); else if (!step.CanSubtract) romanValue = _stepsGenerator.GetNextSmallerSymbol(step) + romanValue; else { if (quotient == 4) romanValue = accumulatedString + step.Symbol.ToString() + _stepsGenerator.GetLastLevelSymbol(step) ; else romanValue = accumulatedString + step.Symbol.ToString() +_stepsGenerator.GetLastSubtractableLevelSymbol(step) ; } return romanValue; }
private string GetRomanValueForSmallerNumbers(int number, string accumulatedString, Step step, int remainder) { var subtractables = _stepsGenerator.GetSubtractablesForLevel(step.Level); if (subtractables != null && subtractables.Any()) { var firstSubtractor = subtractables.First(); if ((firstSubtractor.Value + remainder) == step.Value) return accumulatedString + firstSubtractor.Symbol.ToString() + step.Symbol.ToString(); if ((step.Value - firstSubtractor.Value) < number) { return GetRomanValue(number - (step.Value - firstSubtractor.Value), step.Level, firstSubtractor.Symbol.ToString() + step.Symbol.ToString()); } } return ""; }
private bool IsInvalidStep(Step step, int remainder) { return !step.CanSubtract && remainder > 3; }