Skip to content

Commit 17f21d8

Browse files
committed
Update index.ts
1 parent 0af1e86 commit 17f21d8

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

deep-dark-fraction/index.ts

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,16 @@ import { Fraction } from "../fraction-addition-and-subtraction/Fraction.ts";
22
import { fractionAdd } from "../fraction-addition-and-subtraction/index.ts";
33

44
export default function fraction(cont: number[]): number[] {
5-
if (cont.length === 1) {
6-
return [cont[0], 1];
7-
}
8-
if (cont.length >= 2) {
9-
const last = fraction(cont.slice(-1));
10-
let result = new Fraction({ molecular: last[0], denominator: last[1] });
11-
for (let i = cont.length - 2; i >= 0; i--) {
12-
result = fractionAdd(
13-
[
14-
new Fraction({ molecular: cont[i], denominator: 1 }),
15-
fractionReciprocal(
16-
result,
17-
),
18-
],
19-
);
20-
}
21-
22-
return [result.molecular, result.denominator];
23-
}
24-
25-
return [1, 0];
5+
const result = cont.reduceRight((p, c) =>
6+
fractionAdd(
7+
[
8+
new Fraction({ molecular: c, denominator: 1 }),
9+
fractionReciprocal(
10+
p,
11+
),
12+
],
13+
), new Fraction({ molecular: 1, denominator: 0 }));
14+
return [result.molecular, result.denominator];
2615
}
2716
export function fractionReciprocal(fraction: Fraction): Fraction {
2817
return new Fraction({

0 commit comments

Comments
 (0)