Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def numerals_To_Integer(numeral):
- #Precondition: numeral must be <= 4000
- #Postcondition: returns string representing Roman numeral
- numerals = {'I': 1, 'V':5, 'X': 10, 'L':50, 'C': 100, 'D':500, 'M':1000}
- return sum([numerals[x] for x in numeral])
- def integer_To_Numerals(integer):
- #Precondition: integer must be <= 4000
- #Postcondition: returns string representing Roman numeral
- if int(integer) > 4000:
- raise IllegalArgumentException('must be less than 4000')
- reversed_numerals = {1:'I', 5:'V', 10:'X', 50:'L', 100:'C', 500:'D', 1000:'M'}
- tens = [1,10,100,1000]
- fives = [5,50,500]
- numerals = ''
- for i in reversed(range(0, len(integer))):
- current_pos = len(integer) - i -1
- current = int(integer[i]);
- if (current == 5):
- numerals += reversed_numerals[fives[current_pos]]
- if (current < 5):
- numerals += ''.join([reversed_numerals[tens[current_pos]] for x in range(0, current) ])
- if current > 5:
- current = current - 5
- numerals += ''.join([reversed_numerals[tens[current_pos]] for x in range(0, current) ])
- numerals += reversed_numerals[fives[current_pos]]
- return numerals[::-1]
- def testNumeral():
- test_data = [i for i in range(1,4000)]
- for i in test_data:
- if ( numerals_To_Integer(integer_To_Numerals(str(i))) ):
- print('i is: ', i)
- print('Correct')
- testNumeral()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement