Leonardo da Pisano aka Fibonacci fu determinante nel portare il sistema numerico indù-arabo in Europa. Prima di allora, i matematici lavoravano lì in base a sessanta con numeri romani.
Ad esempio, la radice quadrata di due potrebbe essere approssimata come: una e ventiquattro parti di sessanta e cinquantuno parti di tremilaseicento , e scritte come: i xxiv li , con il ridimensionamento determinato dal contesto. All'epoca era noto il "nulla" ( cioè zero), ma non aveva una rappresentazione standard in questo sistema numerico.
Se Fibonacci avesse ignorato queste cifre decimali di nuova concezione che incontrava durante i suoi viaggi, avrebbe sicuramente affrontato le carenze del sistema attuale. Questo sistema migliorato chiameremo i sessagesimali di Fibonacci .
Il tuo compito è quello di scrivere un frammento di programma, funzione o codice che accetta un numero in virgola mobile in formato ASCII o binario e genera in base a sessanta numeri romani. L'input può essere file, console, riga di comando o argomento della funzione e l'output può essere file o console, a seconda di quale sia la più semplice.
L'output può essere in maiuscolo o minuscolo e deve includere questi miglioramenti:
- usa n o N per indicare null significa che un luogo non ha valore, ovvero "zero" (un problema con il sistema)
- usare e o E per indicare et corrispondente al punto sessagesimale (un altro problema con il sistema)
- usa un punto medio · o un asterisco * per separare gruppi di numeri romani (ancora un altro problema con il sistema)
Supponiamo che l'input sia in virgola mobile con mantissa non maggiore di lix · lix · lix · lix · lix . Frazioni inferiori a n · e · n · n · n · n · i possono essere ignorate. Quindi, a condizione che l'input abbia queste restrizioni, è possibile emettere al massimo dieci gruppi di numeri romani con una e .
Numeri minori dei deve avere un leader e n · al fine di garantire il contesto è chiaro.
Alcuni esempi: input
→ output
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
L'uscita deve evitare inutili leader n · nella parte mantissa, isolato e , o finali · n nella parte frazionaria della produzione. Quindi, ad esempio, n · n · n · n · i , i · e e i · e · n · n · n · n · n sono uscite errate per un ingresso di 1
.
Le differenze di più o meno n · e · n · n · n · n · i nell'output sono entro tolleranze e accettabili.
L'input è qualsiasi punto in virgola mobile legale nella lingua di tua scelta, quindi può includere esponenti positivi o negativi purché l'input non esca dall'intervallo sopra specificato.
E infine, sono ammessi i numeri romani incorporati !