Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Roman Numerals by godfrey77
def checkio(data):
def numbertoroman(number, position):
one = ['M', 'C', 'X', 'I']
five = ['M'*5, 'D', 'L', 'V']
if (number <= 0):
return ''
elif (number <= 3):
return one[position]*number
elif (number == 4):
return one[position] + five[position]
elif (number == 5):
return five[position]
elif (number >= 6 and number <= 8):
return five[position] + one[position]*(number - 5)
elif (number == 9):
return one[position] + one[position - 1]
return ''
string = '{0:0>4d}'.format(data)
return numbertoroman(int(string[0]), 0) + numbertoroman(int(string[1]), 1) + numbertoroman(int(string[2]), 2) + numbertoroman(int(string[3]), 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'
Oct. 12, 2017