Esempio n. 1
0
        public int ConvertRomanToInt(string s, Predicate <int> output_limitation)
        {
            Dictionary <char, int> roman_numbers = GetRomanNumbers();

            int result_value  = 0;
            int current_value = 0;
            int next_value    = 0;

            for (int i = 0; i < s.Length; i++)
            {
                current_value = roman_numbers[s[i]];
                next_value    = (i < s.Length - 1) ? roman_numbers[s[i + 1]] : 0;
                result_value += (current_value >= next_value) ? current_value : -current_value;
                if (output_limitation?.Invoke(result_value) ?? false)
                {
                    messanger?.ShowWarning("output is limited");
                    return(result_value);
                }
            }
            return(result_value);
        }