Leonardo da Pisano, alias Fibonacci, contribuyó decisivamente a llevar el sistema de numeración hindú-árabe a Europa. Antes de eso, los matemáticos allí trabajaban en base sesenta con números romanos.
Por ejemplo, la raíz cuadrada de dos podría aproximarse como: una y veinticuatro partes de sesenta y cincuenta y una partes de tres mil seiscientos , y se escribiría como: i xxiv li , con la escala determinada por el contexto. En ese momento, se conocía la "nada" ( es decir, cero), pero no tenía una representación estándar en este sistema numérico.
Si Fibonacci hubiera ignorado estos dígitos decimales recién descubiertos que encontró durante sus viajes, seguramente habría abordado las deficiencias en el sistema actual. Este sistema mejorado lo llamaremos sexagesimales de Fibonacci .
Su tarea es escribir un programa, función o fragmento de código que tome un número de coma flotante en formato ASCII o binario y que salga en una base de sesenta números romanos. La entrada puede ser archivo, consola, línea de comando o argumento de función y la salida puede ser archivo o consola, lo que sea más fácil.
La salida puede ser mayúscula o minúscula, y debe incluir estas mejoras:
- use n o N para indicar nulo, lo que significa que un lugar no tiene valor, es decir , "cero" (un problema con el sistema)
- use e o E para indicar et correspondiente al punto sexagesimal (otro problema con el sistema)
- use un punto medio · o un asterisco * para separar grupos de números romanos (otro problema más con el sistema)
Suponga que la entrada será de coma flotante con una mantisa no mayor que lix · lix · lix · lix · lix . Las fracciones inferiores a n · e · n · n · n · n · i pueden ignorarse. Entonces, siempre que la entrada tenga estas restricciones, como máximo se pueden generar diez grupos de números romanos con una e .
Números menores que i debe tener un líder n · e para asegurar el contexto está claro.
Algunos ejemplos: input
→ salida
0
→ n1
→ i60
→ i · n0.1
→ n · e · vi3600
→ i · n · n10.5
→ x · e · xxx16777215
→ i · xvii · xl · xx · xv3.1415926536
→ iii · e · viii · xxix · xliv · n · xlvii
La salida debe evitar la entrada innecesaria n · en la parte mantisa, e aislada , o n · final en la parte fraccionaria de la salida. Entonces, por ejemplo, n · n · n · n · i , i · e , e i · e · n · n · n · n · n son salidas incorrectas para una entrada de 1
.
Las diferencias de más o menos n · e · n · n · n · n · i en la salida están dentro de las tolerancias y son aceptables.
La entrada es cualquier punto flotante legal en el idioma de su elección, por lo que puede incluir exponentes positivos o negativos siempre que la entrada no quede fuera del rango especificado anteriormente.
¡Y finalmente, se permiten los números romanos incorporados !