Skip to content

Instantly share code, notes, and snippets.

@mauricioaniche
Created September 5, 2018 09:49
Show Gist options
  • Save mauricioaniche/39fdf01eb26f775f3fe43982c49d46fe to your computer and use it in GitHub Desktop.
Save mauricioaniche/39fdf01eb26f775f3fe43982c49d46fe to your computer and use it in GitHub Desktop.
def convert_letter(letter):
if letter == 'I': return 1
if letter == 'V': return 5
if letter == 'X': return 10
if letter == 'L': return 50
if letter == 'C': return 100
if letter == 'D': return 500
if letter == 'M': return 1000
return -1
def roman(romanNumeral):
number = 0
last = 1000 # large number possible
for letter in romanNumeral:
current_number = convert_letter(letter)
number = number + current_number
if current_number > last: # subtractive notation
number = number - (2 * last)
last = current_number
return number
def test_single_digit():
assert roman("I") == 1
assert roman("V") == 5
def test_many_digits():
assert roman("VI") == 6
assert roman("LXVI") == 66
def test_subtractive_notation():
assert roman("IV") == 4
assert roman("XIV") == 14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment