From 5e684fdf8480708eb7e8c8165a72686177780c35 Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Wed, 12 Feb 2025 21:41:56 +0000 Subject: [PATCH] exercicio 13 resolvido com python --- 13-roman_to_integer/python/13.py | 84 ++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 13-roman_to_integer/python/13.py diff --git a/13-roman_to_integer/python/13.py b/13-roman_to_integer/python/13.py new file mode 100644 index 0000000..f96498b --- /dev/null +++ b/13-roman_to_integer/python/13.py @@ -0,0 +1,84 @@ +# Roman numerals are represented by seven different symbols: +# I, V, X, L, C, D and M. +# +# Symbol Value +# I 1 +# V 5 +# X 10 +# L 50 +# C 100 +# D 500 +# M 1000 +# +# For example, 2 is written as II in Roman numeral, just two ones added +# together. 12 is written as XII, which is simply X + II. The number 27 is +# written as XXVII, which is XX + V + II. +# +# Roman numerals are usually written largest to smallest from left to right. +# However, the numeral for four is not IIII. Instead, the number four is +# written as IV. Because the one is before the five we subtract it making four. +# The same principle applies to the number nine, which is written as IX. There +# are six instances where subtraction is used: +# +# I can be placed before V (5) and X (10) to make 4 and 9. +# X can be placed before L (50) and C (100) to make 40 and 90. +# C can be placed before D (500) and M (1000) to make 400 and 900. +# +# Given a roman numeral, convert it to an integer. + +# +def romanToInt(s: str) -> int: + resultado: int = 0 + for index in range(len(s)): + match s[index]: + case "I": + if (index < (len(s) - 1)) and ( + s[index + 1] == "V" or s[index + 1] == "X" + ): + continue + resultado += 1 + case "V": + if s[index - 1] == "I" and index > 0: + resultado += 4 + continue + else: + resultado += 5 + case "X": + if (index < (len(s) - 1)) and ( + s[index + 1] == "L" or s[index + 1] == "C" + ): + continue + if s[index - 1] == "I" and index > 0: + resultado += 9 + continue + else: + resultado += 10 + case "L": + if s[index - 1] == "X" and index > 0: + resultado += 40 + continue + else: + resultado += 50 + case "C": + if (index < (len(s) - 1)) and ( + s[index + 1] == "D" or s[index + 1] == "M" + ): + continue + if s[index - 1] == "X" and index > 0: + resultado += 90 + continue + else: + resultado += 100 + case "D": + if s[index - 1] == "C" and index > 0: + resultado += 400 + continue + else: + resultado += 500 + case "M": + if s[index - 1] == "C" and index > 0: + resultado += 900 + continue + else: + resultado += 1000 + return resultado