Antecedentes
Este desafío está inspirado en este sitio web, que publicó el siguiente diagrama:
Este diagrama nos muestra que la expresión de número romano más larga por debajo de 250 es la de 188, que requiere 9 números para expresarse.
Desafío
Los símbolos estándar usados para expresar números más romanas son los siguientes: { I
, V
, X
, L
, C
, D
, M
}, donde los valores numéricos de los personajes son M
= 1000, D
= 500, C
= 100, L
= 50, X
= 10, V
= 5, I
= 1.
En este desafío, su objetivo es, dado un número entero positivo n , calcular el número de representaciones válidas de números romanos que se pueden componer mediante la concatenación de n de los símbolos estándar.
¡Entonces, su programa debe generar el resultado de este cálculo!
Entrada : Un entero positivo n .
Salida : El número de expresiones válidas de números romanos de longitud n .
Reglas para expresiones de números romanos
Los números romanos originalmente solo tenían un emparejamiento "aditivo", lo que significa que los números siempre se escribían en orden descendente, y la suma de los valores de todos los números era el valor del número.
Más tarde, el emparejamiento sustractivo, el uso de colocar un número más pequeño frente a uno más grande para restar lo más pequeño de lo más grande, se convirtió en un lugar común para acortar las expresiones de números romanos. Pares sustractivos no se pueden encadenar, como en la siguiente expresión válida: IXL
.
Las siguientes son las reglas modernas para el emparejamiento aditivo y sustractivo.
- Solo uno I, X y C pueden usarse como el número inicial en parte de un par sustractivo.
- Solo puedo colocarme antes de V o X en un par sustractivo.
- X solo se puede colocar antes de L o C en un par sustractivo.
- C solo se puede colocar antes de D o M en un par sustractivo.
- Además de los pares sustractivos, los números deben estar en orden descendente (lo que significa que si suelta el número inicial de cada par sustractivo, los números estarán en orden descendente).
- M, C y X no pueden ser igualados o superados por denominaciones más pequeñas.
- D, L y V solo pueden aparecer una vez.
- Solo M puede repetirse 4 o más veces.
Notas adicionales
No utilizaremos la notación de barra ; más bien, simplemente agregaremos más M s para expresar cualquier número.
Estas son las únicas reglas que seguiremos para nuestros números romanos. Eso significa que las expresiones extrañas, como
IVI
, también se considerarán válidas en nuestro sistema.También recuerde que no estamos contando el número de números que tienen expresiones de longitud n , ya que algunos números tienen múltiples expresiones. En cambio, solo contamos el número de expresiones válidas.
Casos de prueba
1
→ 7
2
→ 31
3
→ 105
Revisé lo anterior a mano, así que asegúrese de verificar los casos de prueba y agregar más si puede.
Criterios ganadores
Este es un desafío de código de golf , ¡así que diviértete! Solo aceptaré soluciones que puedan manejar al menos entradas del 1 al 9. ¡Más es un bono!
Editar
Según lo solicitado por los comentaristas, encuentre a continuación, o en este enlace de pastebin, los 105 combos que conté para n = 3
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XLX XCI XCV XCX XCL XCC LII LIV LIX LVI LXI LXV LXX CII CIV CIX CVI CXI CXV CXX CXL CXC CLI CLV CLX CCI CCV CCX CCL CCC CDI CDV CDX CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXV DXX DXL DXC DLI DLV DLX DCI DCV DCX DCL DCC MII MIV MIX MVI MXI MXV MXX MXL MXC MLI MLV MLX MCI MCV MCX MCL MCC MCD MCM MDI MDC MDX MDL MDV MMX MML MMC MMD MMM
Edición 2:
Use el siguiente código no relacionado con el golf , como cortesía de Jonathan Allan para verificar sus resultados.
Edición 3:
Pido disculpas por todos los errores en este desafío. ¡Me aseguraré de hacer un mejor trabajo la próxima vez!