Skip to content

Instantly share code, notes, and snippets.

@asedmammad
Created July 3, 2023 09:14
Show Gist options
  • Select an option

  • Save asedmammad/cb510ce51c724b8655346aab6b419f99 to your computer and use it in GitHub Desktop.

Select an option

Save asedmammad/cb510ce51c724b8655346aab6b419f99 to your computer and use it in GitHub Desktop.

Revisions

  1. asedmammad created this gist Jul 3, 2023.
    22 changes: 22 additions & 0 deletions roman-number.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    def number_to_roman(n): # Number to Roman encoder
    roman_numerals = {1000: 'M', 900: 'CM', 500: 'D', 400: 'CD', 100: 'C', 90: 'XC', 50: 'L', 40: 'XL', 10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I'}
    roman_num = ''
    for value, numeral in sorted(roman_numerals.items(), reverse=True):
    while n >= value:
    roman_num += numeral
    n -= value
    return roman_num

    def roman_to_number(roman_num): # Roman to Number decoder
    roman_numerals = {'M': 1000, 'CM': 900, 'D': 500, 'CD': 400, 'C': 100, 'XC': 90, 'L': 50, 'XL': 40, 'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1}
    num = 0
    i = 0
    while i < len(roman_num):
    for value, numeral in roman_numerals.items():
    if roman_num[i:i+len(value)] == value:
    num += numeral
    i += len(value)
    break
    else:
    return None # Invalid Roman numeral
    return num