Rubykuby

Romannumerals2

Jan 6th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. NUMERALS = {'I':1, 'IV':4, 'V':5,  'IX':9, 'X':10,  'XL':40, 'L':50, 'XC':90, 'C':100, 'CD':400, 'D':500, 'CM':900, 'M':1000}
  2.  
  3. def next_is_combo(numeral, index):
  4.     try:
  5.         if numeral[index] + numeral[index+1] in NUMERALS:
  6.             return True
  7.         else:
  8.             return False
  9.     except IndexError:
  10.         return False
  11.  
  12. def previous_is_combo(numeral, index):
  13.     if index - 1 < 0:
  14.         return False
  15.     elif numeral[index-1] + numeral[index] in NUMERALS:
  16.         return True
  17.     else:
  18.         return False
  19.  
  20. def compare(numeral, index):
  21.     if next_is_combo(numeral, index):
  22.         return NUMERALS[numeral[index] + numeral[index+1]]
  23.     elif previous_is_combo(numeral, index):
  24.         return 0
  25.     else:
  26.         return NUMERALS[numeral[index]]
  27.  
  28. def numeral_to_decimal(numeral):
  29.     decimal = 0
  30.  
  31.     for letter in range(len(numeral)):
  32.         decimal += compare(numeral, letter)
  33.  
  34.     return decimal
  35.  
  36. def main():
  37.     print(numeral_to_decimal("MCMLIV"))
  38.     print()
  39.     print(numeral_to_decimal("MMVIII"))
  40.     print()
  41.     print(numeral_to_decimal("MCMXC"))
  42.     print()
  43.     print(numeral_to_decimal("MCDIV"))
  44.  
  45. if __name__ == "__main__":
  46.     main()
Advertisement
Add Comment
Please, Sign In to add comment