Su objetivo es escribir un código que genere la secuencia decimal única más corta para la fracción de entrada. No hay dos fracciones con el mismo denominador pueden tener la misma salida, aunque es posible que las fracciones con diferentes denominadores tengan la misma representación.
Tome 2 enteros como entrada, el primero es el numerador, el segundo es el denominador.
P.ej:
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
etc.
3/13
es la única fracción con un denominador de 13 que comienza con 0.2
, por lo que no se requieren más dígitos. 4/13
y 5/13
ambos comienzan con 0.3
, por lo que se requiere otro dígito para distinguirlos.
Puede generar números mayores que -1 y menores que 1 con o sin un cero antes del punto decimal, siempre que la salida sea consistente, es decir, 0.5
y .5
sean el mismo número y sean válidos. No se permiten otros ceros a la izquierda. Los ceros finales se deben mostrar si son necesarios para distinguir la salida de otro valor.
No puede redondear ningún número desde cero; deben ser truncados No debe haber espacios iniciales o finales. Opcionalmente, puede haber una nueva línea final.
Más valores de prueba:
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)
En cada caso, la salida y el denominador son suficientes para resolver de forma única el numerador.
fuente
/b
yi
para,p
así que también podría codificarlos dentro dep
sí mismo y simplemente tomar un solo parámetro. Además, la respuesta es solon
para que no tenga que calcularlo nuevamente. Tengo una versión recursiva de ES6 basada en esto en solo 86 bytes ...