Twoim celem jest napisanie kodu, który wyświetli najkrótszą unikalną sekwencję dziesiętną dla ułamka wejściowego. Żadne dwie ułamki o tym samym mianowniku mogą mieć tę samą moc wyjściową, chociaż możliwe jest, że ułamki o różnych mianownikach mają tę samą reprezentację.
Weź 2 liczby całkowite jako dane wejściowe, pierwszy to licznik, drugi to mianownik.
Na przykład:
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
itp.
3/13
jest jedyną frakcją o mianowniku 13, która zaczyna się od 0.2
, więc dalsze cyfry nie są wymagane. 4/13
i 5/13
oba zaczynają się od 0.3
, więc do ich rozróżnienia potrzebna jest kolejna cyfra.
Możesz wypisywać liczby większe niż -1 i mniejsze niż 1 albo z zerem, albo bez zera przed kropką dziesiętną, o ile dane wyjściowe są spójne, tj. 0.5
I .5
są tej samej liczby i oba są poprawne. Żadne inne zera wiodące nie są dozwolone. Zera końcowe muszą być pokazane, jeśli są konieczne do odróżnienia wyniku od innej wartości.
Nie możesz zaokrąglać żadnych liczb od zera; muszą zostać obcięte. Nie może być żadnych spacji wiodących ani końcowych. Opcjonalnie może występować pojedynczy znak nowej linii.
Więcej wartości testowych:
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)
W każdym przypadku dane wyjściowe i mianownik są wystarczające do jednoznacznego opracowania licznika.
/b
ii
dop
tak równie dobrze można je kod wewnątrzp
siebie i po prostu wziąć jeden parametr. Odpowiedź jestn
taka, że nie musisz jej ponownie obliczać. Mam rekurencyjną wersję ES6 luźno opartą na tym przy zaledwie 86 bajtach ...