Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. def numerals_To_Integer(numeral):
  2. #Precondition: numeral must be <= 4000
  3. #Postcondition: returns string representing Roman numeral
  4. numerals = {'I': 1, 'V':5, 'X': 10, 'L':50, 'C': 100, 'D':500, 'M':1000}
  5.  
  6. return sum([numerals[x] for x in numeral])
  7.  
  8.  
  9. def integer_To_Numerals(integer):
  10. #Precondition: integer must be <= 4000
  11. #Postcondition: returns string representing Roman numeral
  12.  
  13.  
  14. if int(integer) > 4000:
  15. raise IllegalArgumentException('must be less than 4000')
  16.  
  17. reversed_numerals = {1:'I', 5:'V', 10:'X', 50:'L', 100:'C', 500:'D', 1000:'M'}
  18.  
  19. tens = [1,10,100,1000]
  20. fives = [5,50,500]
  21. numerals = ''
  22. for i in reversed(range(0, len(integer))):
  23. current_pos = len(integer) - i -1
  24. current = int(integer[i]);
  25.  
  26. if (current == 5):
  27. numerals += reversed_numerals[fives[current_pos]]
  28.  
  29. if (current < 5):
  30. numerals += ''.join([reversed_numerals[tens[current_pos]] for x in range(0, current) ])
  31.  
  32. if current > 5:
  33. current = current - 5
  34. numerals += ''.join([reversed_numerals[tens[current_pos]] for x in range(0, current) ])
  35. numerals += reversed_numerals[fives[current_pos]]
  36.  
  37.  
  38.  
  39.  
  40. return numerals[::-1]
  41.  
  42. def testNumeral():
  43. test_data = [i for i in range(1,4000)]
  44. for i in test_data:
  45.  
  46. if ( numerals_To_Integer(integer_To_Numerals(str(i))) ):
  47. print('i is: ', i)
  48. print('Correct')
  49.  
  50.  
  51. testNumeral()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement