string getRomanDigitPreview(int number) { RomansCatalog catalog = RomansCatalog.GetInstance(); Roman[] romans = catalog.GetAll(); Roman previous = null; foreach (Roman n in romans) { if (number == n) { return(n.Letter); } else if (number > n) { previous = n; } else { break; } } return(previous.Letter + getRomanDigitPreview(number - previous.Value)); }
public int ConvertToNumber(string roman) { string start = ""; string result = roman; while (start != result) { start = result; foreach (ReplacementPattern r in ReplacementPatternCatalog.GetInstance().GetAll()) { result = r.ReverseReplace(result); } } int number = 0; foreach (char c in result) { number += RomansCatalog.GetInstance().GetOne(c).Value; } return(number); }