Resumen
Los antiguos romanos idearon un sistema numérico usando letras latinas, que les sirvió bien, y que todavía es utilizado por la civilización moderna, aunque en un grado mucho menor. En el momento de su uso, los romanos habrían tenido que aprender a usar y manipular estos números para ser de gran utilidad en muchas aplicaciones. Por ejemplo, si un hombre poseía 35 bueyes y adquirió 27 más, ¿cómo conocería el nuevo total además de contarlos a todos? ( Ok, eso y usar un ábaco ... ) Si los romanos pudieran hacerlo, seguramente también podemos resolverlo.
Objetivo
Escribir el algoritmo / función / programa más corto que agregará dos números romanos y generará el resultado sin convertir la representación de cadena de cualquier entrada en un número.
Reglas / restricciones
Debido a las inconsistencias históricas / pre-medievales en el formato, voy a describir algunas reglas no estándar (por uso moderno) para la ortografía. Consulte la guía de valores a continuación como ejemplo.
- Las letras I, X, C y M se pueden repetir hasta cuatro veces seguidas, pero no más. D, L y V nunca pueden repetirse.
- La letra inmediatamente a la derecha de otra letra en la representación romana tendrá el mismo valor o menor que el de la izquierda.
- En otras palabras,
VIIII == 9
peroIX != 9
y es inválido / no permitido.
- En otras palabras,
- Todos los valores de entrada serán 2,000 (MM) o menos; no es necesaria una representación para números mayores que M.
- Todos los valores de entrada serán un número romano válido, de acuerdo con las reglas anteriores.
- No puede convertir ningún número a decimal, binario o cualquier otro sistema de números como parte de su solución (puede usar dicho método para VERIFICAR sus resultados).
- Este es el código de golf, por lo que gana el código más corto.
Guía de valor
Symbol Value
I 1
II 2
III 3
IIII 4
V 5
VIIII 9
X 10
XIIII 14
XXXXIIII 44
L 50
LXXXXVIIII 99
C 100
D 500
M 1,000
Ejemplos
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)
Si necesita más aclaraciones, por favor pregunte.