Ihr Ziel ist es, Code zu schreiben, der die kürzeste eindeutige Dezimalsequenz für den eingegebenen Bruch ausgibt. Keine zwei Brüche mit demselben Nenner dürfen dieselbe Ausgabe haben, obwohl Brüche mit unterschiedlichen Nennern dieselbe Darstellung haben können.
Nehmen Sie 2 Ganzzahlen als Eingabe, die erste ist der Zähler, die zweite der Nenner.
Z.B:
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
ist der einzige Bruch mit einem Nenner von 13, der mit beginnt 0.2
, sodass keine weiteren Ziffern erforderlich sind. 4/13
und 5/13
beide beginnen mit 0.3
, daher ist eine weitere Ziffer erforderlich, um zwischen ihnen zu unterscheiden.
Sie können Ausgangsnummern größer als -1 und weniger als 1 entweder mit oder ohne Null vor dem Komma, solange der Ausgang konsistent ist, dh 0.5
und .5
die gleiche Anzahl und sind beide gültig. Andere führende Nullen sind nicht zulässig. Nachgestellte Nullen müssen angezeigt werden, wenn sie erforderlich sind, um die Ausgabe von einem anderen Wert zu unterscheiden.
Sie dürfen keine Zahlen von Null abrunden. Sie müssen abgeschnitten werden. Es dürfen keine führenden oder nachfolgenden Leerzeichen vorhanden sein. Optional kann eine einzelne nachgestellte Zeile eingefügt werden.
Weitere Testwerte:
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 jedem Fall reichen die Ausgabe und der Nenner aus, um den Zähler eindeutig zu berechnen.
/b
und übergeben immeri
,p
sodass Sie sie genauso gut in sichp
selbst codieren und nur einen einzigen Parameter verwenden können. Außerdem ist die Antwort nurn
so, dass Sie sie nicht erneut berechnen müssen. Ich habe eine rekursive ES6-Version, die lose auf dieser mit nur 86 Bytes basiert ...