Il tuo obiettivo è scrivere del codice che genererà la sequenza decimale univoca più breve per la frazione di input. Non esistono due frazioni con lo stesso denominatore che possono avere lo stesso output, sebbene sia possibile che le frazioni con denominatori diversi abbiano la stessa rappresentazione.
Prendi 2 numeri interi come input, il primo è il numeratore, il secondo è il denominatore.
Per esempio:
n d output
----- ------
0 13: 0.00
1 13: 0.07
2 13: 0.1
3 13: 0.2
4 13: 0.30
5 13: 0.38
eccetera.
3/13
è l'unica frazione con un denominatore di 13 che inizia con 0.2
, quindi non sono necessarie ulteriori cifre. 4/13
ed 5/13
entrambi iniziano con 0.3
, quindi è necessaria un'altra cifra per distinguerli.
È possibile generare numeri maggiori di -1 e minori di 1 con o senza zero prima del punto decimale, purché l'output sia coerente, ovvero 0.5
e .5
abbiano lo stesso numero e siano entrambi validi. Non sono consentiti altri zeri iniziali. Gli zeri finali devono essere visualizzati se sono necessari per distinguere l'output da un altro valore.
Non è possibile arrotondare alcun numero lontano da zero; devono essere troncati. Non ci devono essere spazi iniziali o finali. Opzionalmente può esserci una sola nuova riga finale.
Più valori di prova:
n d output
---------- ------
0 1: 0 (this 0 may not be removed because there's no decimal point)
5 1: 5
0 3: 0.0 (or .0)
4 3: 1.3
5 3: 1.6
10 8: 1.2
11 8: 1.3
12 8: 1.5
-496 -38: 13.05
458 -73: -6.27
70 106: 0.660 (or .660)
255 123: 2.07
256 -123: -2.081
-257 -123: 2.089
-258 123: -2.09
258 -152: -1.697
-259 152: -1.70
260 152: 1.710
272 195: 1.39
380 247: 1.538
455 -455: -1.000
-44 891: -0.049 (or -.049)
123 1234: 0.099 (or .099)
In ogni caso, l'output e il denominatore sono sufficienti per elaborare in modo univoco il numeratore.
/b
ei
alp
modo si potrebbe anche loro codice all'interno dip
se stessa e basta prendere un singolo parametro. Anche la risposta è solon
per non doverla calcolare di nuovo. Ho una versione ricorsiva ES6 liberamente basata su questa a soli 86 byte ...