- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
class RomeNumberConvertor(object):
def __init__(self):
self.discharge = ['unit', 'dozen', 'hundred', 'thousand']
self.unit_set = ('I', 'V', 'X')
self.dozen_set = ('X', 'L', 'C')
self.hundred_set = ('C', 'D', 'M')
self.thousand_set = ('M')
def _discharge2rome(self, discharge, value):
pattern = {'1': '{0}', '2': '{0}{0}', '3': '{0}{0}{0}',
'4': '{0}{1}', '5': '{1}', '6': '{1}{0}',
'7': '{1}{0}{0}', '8': '{1}{0}{0}{0}', '9': '{0}{2}'}
return pattern[value].format(*getattr(self, '%s_set' % discharge))
def lat2rome(self, num):
rome_digit = ''
for i, k in enumerate(reversed(str(num))):
if k == '0': continue
rome_digit = '%s%s' % (self._discharge2rome(self.discharge[i], k), rome_digit)
return rome_digit