Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Roman Numerals by Michael_Zilberman
def checkio(data):
symbols = {1: 'I', 5: 'V', 10: 'X', 50: 'L', 100: 'C', 500: 'D', 1000: 'M'}
roman = ""
for p in [1000, 100, 10, 1]:
n = data // p
if n < 4:
roman += n * symbols[p]
elif n == 4:
roman += symbols[p] + symbols[p*5]
elif n == 9:
roman += symbols[p] + symbols[p*10]
else:
roman += symbols[p*5] + (n - 5) * symbols[p]
data %= p
return roman
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'
April 5, 2018