Advertisement
superpawko

Untitled

Oct 8th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. def checkio(data):
  2. roman_dict = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
  3. # SET VARIABLES
  4. result = ""
  5. key_value = len(roman_dict)-1 # LAST INDEX from
  6. R_KEY = sorted(roman_dict.keys(), key = lambda x: roman_dict[x]) # Sorted keys from roman_dict
  7.  
  8. def dig_to_roman(data, result, key_value):
  9. #print("key : ", key_value)
  10. if data >= roman_dict[R_KEY[key_value]]: # STARTS FROM "M" - > "D" -> ... "I"
  11.  
  12. minus = roman_dict[R_KEY[key_value]]
  13. #print(data, R_KEY[key_value], minus//5)
  14. if int(str(data)[0]) == 9:
  15. result += R_KEY[key_value-1]
  16. result += R_KEY[key_value+1]
  17. minus = (minus//5) * 9
  18. elif int(str(data)[0]) == 4:
  19. result += R_KEY[key_value]
  20. result += R_KEY[key_value+1]
  21. minus = (minus) * 4
  22.  
  23. elif int(str(data)[0]) == 3:
  24. result += R_KEY[key_value]*3
  25. minus = (minus *3 )
  26. elif data == 0:
  27. return result
  28. else:
  29. result += R_KEY[key_value]
  30.  
  31. return dig_to_roman(data-minus, result, key_value)
  32.  
  33. elif data != 0 : # TRY ANOTHER ROMAN NUMBER
  34. return dig_to_roman(data, result, key_value-1)
  35.  
  36. else:
  37. return result
  38.  
  39.  
  40.  
  41. return dig_to_roman(data, "", key_value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement