Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- values ={'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
- dvs = sorted(values.items(), key=lambda x:x[1], reverse=True)
- def converter(num):
- def roman2int(s):
- num = 0
- while s:
- n, m = f'{s}0'[:2]
- n, m = values[n], values.get(m, 0)
- num += max(m-n, n)
- s = s[1+(m>n):]
- return num
- def int2roman(num):
- if num < 0: return None
- if num ==0: return ''
- for k, v in dvs:
- for k2, v2 in dvs:
- rem = v - v2
- if (v2 < num < v) and (num >= rem) and (rem != v2):
- v = rem
- k = k2 + k
- break
- if (roman:=int2roman(num-v)) != None:
- return k + roman
- return None
- roman = int2roman(num)
- number = roman2int(roman)
- print(f'Original: {num} => Roman: {roman} => Number: {number}')
- converter(1912)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement