Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Roman Numerals by VladimirHolopov
def checkio(val):
dOne = {0:'',1:'I',2:'II',3:'III',4:'IV',5:'V',6:'VI',7:'VII',8:'VIII',9:'IX'}
dTwo = {0:'',1:'X',2:'XX',3:'XXX',4:'XL',5:'L',6:'LX',7:'LXX',8:'LXXX',9:'XC'}
dThree = {0:'',1:'C',2:'CC',3:'CCC',4:'CD',5:'D',6:'DC',7:'DCC',8:'DCCC',9:'CM'}
dFour = {1:'M',2:'MM',3:'MMM'}
s = str(val)
if len(s) == 1:
return dOne[val]
if len(s) == 2:
return dTwo[int(s[0])]+dOne[int(s[1])]
if len(s) == 3:
return dThree[int(s[0])] + dTwo[int(s[1])] + dOne[int(s[2])]
if len(s) == 4:
return dFour[int(s[0])] + dThree[int(s[1])] + dTwo[int(s[2])] + dOne[int(s[3])]
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio(6) == 'VI', '6'
assert checkio(76) == 'LXXVI', '76'
assert checkio(499) == 'CDXCIX', '499'
assert checkio(3888) == 'MMMDCCCLXXXVIII', '3888'
Jan. 3, 2016