Advertisement
gustbs

Untitled

Mar 26th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.42 KB | None | 0 0
  1. # https://www.codewars.com/kata/51b66044bce5799a7f000003/train/python
  2.  
  3. def to_roman(number: int) -> str:
  4.     roman_number = {'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}
  5.     roman = ''
  6.     for k,v in roman_number.items():
  7.         if (number // v) > 0:
  8.             roman += (number // v) * k
  9.             number = number % v
  10.         else:
  11.             continue
  12.     return roman
  13.        
  14. def from_roman(string: str) -> int:
  15.     roman_number = {'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}
  16.     list_char = list(string)
  17.     number = 0
  18.     while list_char != []:
  19.         if len(list_char) == 1:
  20.             number += roman_number.get(list_char[0])
  21.             list_char.remove(list_char[0])
  22.         elif roman_number.get(list_char[0]) > roman_number.get(list_char[1]):
  23.             number += roman_number.get(list_char[0])
  24.             list_char.remove(list_char[0])
  25.         elif roman_number.get(list_char[0]) < roman_number.get(list_char[1]):
  26.             number += roman_number.get(list_char[0]+list_char[1])
  27.             del list_char[0:2]
  28.         elif roman_number.get(list_char[0]) == roman_number.get(list_char[1]):
  29.             number += string.count(list_char[0]) * roman_number.get(list_char[0])
  30.             del list_char[0:string.count(list_char[0])]
  31.     return number
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement