@@ -3,24 +3,33 @@ import { deduplication } from "./deduplication.ts";
3
3
import { Fraction } from "./Fraction.ts" ;
4
4
import { parseFraction } from "./parseFraction.ts" ;
5
5
import { FractionToString } from "./Fraction.ts" ;
6
- export function fractionAdd ( fractions : Fraction [ ] , simplify = true ) : Fraction {
6
+ export function fractionAdd ( fractions : Fraction [ ] ) : Fraction {
7
7
const denominator = deduplication (
8
8
fractions . map ( ( f ) => f . denominator ) ,
9
9
) . reduce ( ( a , b ) => a * b ) ;
10
10
const molecular = fractions
11
11
. map ( ( f ) => ( f . sign * f . molecular * denominator ) / f . denominator )
12
12
. reduce ( ( a , b ) => a + b ) ;
13
- const gcd = simplify ? greatestCommonDivisor ( molecular , denominator ) : 1 ;
13
+
14
+ return new Fraction ( {
15
+ denominator : denominator ,
16
+ molecular : molecular ,
17
+ } ) ;
18
+ }
19
+ export function simplifyFraction ( fraction : Fraction ) {
20
+ const { molecular, denominator } = fraction ;
21
+ const gcd = greatestCommonDivisor ( molecular , denominator ) ;
14
22
return new Fraction ( {
15
- denominator : denominator / gcd ,
16
- molecular : molecular / gcd ,
23
+ sign : fraction . sign ,
24
+ denominator : fraction . denominator / gcd ,
25
+ molecular : fraction . molecular / gcd ,
17
26
} ) ;
18
27
}
19
28
function fractionAddition ( expression : string ) : string {
20
29
const fractions = parseFraction ( expression ) ;
21
30
22
31
return FractionToString (
23
- fractionAdd ( fractions ) ,
32
+ simplifyFraction ( fractionAdd ( fractions ) ) ,
24
33
) ;
25
34
}
26
35
export default fractionAddition ;
0 commit comments