Saltar al contenido

Números romanos

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):
    pass

JavaScript

function leeRomano(romano) {
}
Resolver este reto

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.

Más retos de O(n)

Ver todos los retos →