Rutas
/
Ruby
Ruby
/
Ejercicios
/
Números romanos
Números romanos

Números romanos

Fácil

Introducción

Hoy en día, la mayoría de la gente del mundo usa los números arábigos (0–9). Pero si viajaras dos mil años atrás, descubrirías que la mayoría de los europeos usaba en su lugar los números romanos.

Para escribir un número romano usamos las siguientes letras latinas, cada una de las cuales tiene un valor:

M D C L X V I
1000 500 100 50 10 5 1

Un número romano es una secuencia de estas letras, y su valor es la suma de los valores de las letras. Por ejemplo, XVIII tiene el valor 18 (10 + 5 + 1 + 1 + 1 = 18).

Sin embargo, hay una regla que complica un poco las cosas: la misma letra no puede usarse más de tres veces seguidas. Eso significa que no podemos expresar números como el 4 con el aparentemente natural IIII. En su lugar, para esos números usamos un método de resta entre dos letras. Así que pensamos en el 4 no como 1 + 1 + 1 + 1, sino como 5 - 1. Y, aunque a nuestra mentalidad moderna le resulte un poco confuso, escribimos primero el número menor. Esto solo se aplica en los siguientes casos: 4 (IV), 9 (IX), 40 (XL), 90 (XC), 400 (CD) y 900 (CM).

¡El orden importa en los números romanos! Las letras (y los compuestos especiales anteriores) deben ordenarse de mayor a menor valor de izquierda a derecha.

Aquí tienes algunos ejemplos:

 105 => CV
---- => --
 100 => C
+  5 =>  V
 106 => CVI
---- => --
 100 => C
+  5 =>  V
+  1 =>   I
 104 => CIV
---- => ---
 100 => C
+  4 =>  IV

Y un último ejemplo más complejo:

 1996 => MCMXCVI
----- => -------
 1000 => M
+ 900 =>  CM
+  90 =>    XC
+   5 =>      V
+   1 =>       I

Instrucciones

Tu tarea consiste en convertir un número escrito con números arábigos a números romanos.

En este ejercicio solo nos ocupamos de los números romanos tradicionales, en los que el número más grande es MMMCMXCIX (o 3.999).

Note

Hay muchas formas distintas de convertir entre números arábigos y romanos. Te recomendamos empezar con un enfoque ingenuo para familiarizarte con el concepto de los números romanos y, después, buscar métodos más eficientes.

¡No dejes de ver nuestro vídeo Deep Dive al final para explorar los distintos enfoques que puedes seguir!

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Ruby Exercism

¿Listo para empezar Números romanos?

Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Números romanos!

Explora una variedad de soluciones distintas para este ejercicio tan complicado, desde la recursión hasta las búsquedas basadas en tablas, pasando por una solución que utiliza números de base mixta y algún que otro truco simple en Common Lisp.