Números romanos
- O(n) · Media
- Plan completo
- Python
- JavaScript
- textos
- índices
- comparaciones
Enunciado
La columna del foro todavía conserva su inscripción, y el guía tiene que leerla en voz alta a los visitantes. El año está en números romanos. Escribe una función que reciba un texto con un número romano y regrese su valor como número entero. Cada símbolo vale: I 1, V 5, X 10, L 50, C 100, D 500 y M 1000. Se lee de izquierda a derecha y cada símbolo suma su valor, salvo cuando el símbolo que le sigue vale más: entonces resta. Así IV es 4, IX es 9, XL es 40, XC es 90, CD es 400 y CM es 900. El último símbolo siempre suma.
Por ejemplo, CCXLIX es 100 + 100 - 10 + 50 - 1 + 10 = 249.
El texto siempre es un número romano válido, en mayúsculas, del 1 al 3999: no hace falta revisarlo.
Ejemplos
El del ejemplo
"CCXLIX" → 249
Solo sumas
"MDCLXVI" → 1666
Una resta
"IV" → 4
Símbolos iguales seguidos
"LVIII" → 58
Dos restas
"XCIX" → 99
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def lee_romano(romano):
passJavaScript
function leeRomano(romano) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.